#include <bits/stdc++.h>
using namespace std;
void read(int &k) {
  k = 0;
  char x = getchar();
  while (x < '0' || x > '9') x = getchar();
  while (x >= '0' && x <= '9') {
    k = k * 10 - 48 + x;
    x = getchar();
  }
}
int n, a[55], K;
long double dp[55][55][55], ans, fac[55];
int main() {
  scanf("%d", &n);
  int sum = 0;
  for (int i = 0; i < n; i++) scanf("%d", &a[i]), sum += a[i];
  scanf("%d", &K);
  if (sum <= K) {
    printf("%.9lf\n", double(n));
    return 0;
  }
  for (int i = 0; i < n; i++) fac[0] = 1;
  for (int i = 1; i <= n; i++) fac[i] = fac[i - 1] * i;
  for (int pos = 0; pos < n; pos++) {
    memset(dp, 0, sizeof dp);
    dp[0][0][0] = 1;
    for (int i = 0; i < n; i++) {
      if (i == pos) {
        memcpy(dp[i + 1], dp[i], sizeof dp[i]);
        continue;
      }
      for (int j = 0; j <= i; j++)
        for (int k = 0; k <= K; k++) {
          if (k + a[i] <= K) dp[i + 1][j + 1][k + a[i]] += dp[i][j][k];
          dp[i + 1][j][k] += dp[i][j][k];
        }
    }
    for (int i = 1; i <= n; i++)
      for (int j = max(K - a[pos] + 1, 1); j <= K; j++)
        ans += ((long double)dp[n][i][j]) * fac[i] * fac[n - i - 1] * i;
  }
  ans /= fac[n];
  printf("%.9lf\n", double(ans));
  return 0;
}
