#include <bits/stdc++.h>
using namespace std;
int n, p, s;
int a[55];
long long memo[55][55][55][55];
double fact[55];
long long dp(int x, int sum, int cnt, int forb) {
  if (x == n) return (cnt == 0) && (a[forb] > sum);
  long long &dev = memo[x][sum][cnt][forb];
  if (dev == -1) {
    dev = 0LL;
    if (sum >= a[x] && x != forb && cnt)
      dev += dp(x + 1, sum - a[x], cnt - 1, forb);
    dev += dp(x + 1, sum, cnt, forb);
  }
  return dev;
}
int main() {
  fact[0] = 1;
  for (int i = 1; i < 55; ++i) fact[i] = fact[i - 1] * (1.0 * i);
  while (cin >> n) {
    for (int i = 0; i < n; ++i) cin >> a[i];
    s = accumulate(a, a + n, 0);
    cin >> p;
    if (s <= p) {
      cout << n << "\n";
      continue;
    }
    memset(memo, -1, sizeof(memo));
    double ans = 0;
    for (int X = 1; X < n; ++X)
      for (int j = 0; j < n; ++j)
        ans += fact[X] * fact[n - X - 1] * (1.0 * dp(0, p, X, j)) * X;
    printf("%.10lf\n", ans / fact[n]);
  }
}
