#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << '\n';
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
template <class T>
void mxi(T& a, const T& b) {
  a = max(a, b);
}
template <class T>
void mni(T& a, const T& b) {
  a = min(a, b);
}
long double EPS = 1e-9;
mt19937 RNG(chrono::steady_clock::now().time_since_epoch().count());
long long dp[55][55][55][55], n, p, ar[55];
long double fact[55];
void pre() {
  fact[0] = 1;
  for (long long i = 1; i < 51; i++) fact[i] = i * fact[i - 1];
}
long long go(long long id, long long sum, long long taken, long long lastid) {
  long long& e = dp[id][sum][taken][lastid];
  if (id == n) {
    if (sum - ar[lastid] < 0 && taken == 0) return 1;
    return 0;
  }
  if (e == -1) {
    e = 0;
    if (id == lastid)
      e = go(id + 1, sum, taken, lastid);
    else {
      e = go(id + 1, sum, taken, lastid);
      if (-ar[id] + sum >= 0) e += go(id + 1, sum - ar[id], taken - 1, lastid);
    }
  }
  return e;
}
void solve() {
  memset(dp, -1, sizeof(dp));
  cin >> n;
  for (long long i = 0; i < (n); i++) cin >> ar[i];
  cin >> p;
  long long sum = 0;
  for (long long i = 0; i < (n); i++) sum += ar[i];
  if (sum <= p) {
    cout << fixed << setprecision(6) << (long double)n << '\n';
    return;
  }
  for (long long i = 0; i < (n); i++) {
    for (long long j = 0; j < (n); j++) dp[0][p][j][i] = go(0, p, j, i);
  }
  long double ans = 0;
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < n; j++) {
      ans +=
          ((long double)dp[0][p][j][i]) * (j) * (fact[j]) * (fact[n - j - 1]);
    }
  }
  ans /= fact[n];
  cout << fixed << setprecision(6) << ans << '\n';
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long t, tab;
  t = 1;
  pre();
  tab = t;
  while (t--) {
    solve();
  }
}
