#include <bits/stdc++.h>
using namespace std;
inline int in() {
  int32_t x;
  scanf("%d", &x);
  return x;
}
inline string get() {
  char ch[1000010];
  scanf("%s", ch);
  return ch;
}
const long long maxn = 60 + 10;
const long long MAX_LG = 21;
const long long INF = 1e9;
const long long SQ = 317;
const long long mod = 1e9 + 7;
long long dp[maxn][maxn], a[maxn];
long long can[maxn][maxn];
long long tot;
long double res;
long double c[100][100];
int32_t main() {
  long long n = in();
  for (long long i = 0; i < n; i++) a[i] = in();
  long long p = in();
  for (long long i = 0; i < maxn; i++) {
    for (long long j = 0; j <= i; j++) {
      if (!j)
        c[i][j] = 1;
      else
        c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
    }
  }
  can[0][0] = true;
  for (long long pt = 0; pt < n; pt++) {
    for (long long cnt = pt; cnt >= 0; cnt--) {
      for (long long sum = maxn - 1; sum >= 0; sum--) {
        if (sum + a[pt] > p) continue;
        can[cnt + 1][sum + a[pt]] += can[cnt][sum];
      }
    }
  }
  for (long long i = 1; i <= n; i++) {
    long long tot = 0;
    for (long long j = 0; j <= p; j++) {
      tot += can[i][j];
    }
    res += ((long double)tot) / c[n][i];
  }
  cout.precision(10);
  cout << fixed << res << "\n";
}
