#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
const int N = 51;
long double fact[N], dp[2][N][N];
int n, p, a[N];
int main() {
  scanf("%d", &n);
  int all = 0;
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
    all += a[i];
  }
  scanf("%d", &p);
  if (all <= p) {
    cout << fixed << setprecision(9) << n + 0.0 << endl;
    return 0;
  }
  fact[0] = 1.0;
  for (int i = 1; i < N; ++i) {
    fact[i] = i * fact[i - 1];
  }
  long double ans = 0.0;
  for (int i = 0; i < n; ++i) {
    fill(dp[0][0], dp[0][0] + 2 * N * N, 0.0);
    dp[1][0][0] = 1.0;
    bool rev = false;
    int last = 1;
    for (int j = 0; j < n; ++j) {
      if (j == i) {
        rev = true;
        continue;
      }
      int now = j % 2;
      int pre = 1 - now;
      if (rev) {
        swap(pre, now);
      }
      last = now;
      for (int cnt = 0; cnt < N; ++cnt) {
        for (int sum = 0; sum < N; ++sum) {
          dp[now][cnt][sum] = 0.0;
          dp[now][cnt][sum] += dp[pre][cnt][sum];
          if (sum >= a[j] && cnt) {
            dp[now][cnt][sum] += dp[pre][cnt - 1][sum - a[j]];
          }
        }
      }
    }
    for (int cnt = 0; cnt <= n; ++cnt) {
      for (int sum = 0; sum < N; ++sum) {
        if (sum <= p && sum + a[i] > p && dp[last][cnt][sum] > 1e-7) {
          ans += cnt * fact[cnt] * fact[n - 1 - cnt] * dp[last][cnt][sum];
        }
      }
    }
  }
  cout << fixed << setprecision(9) << ans / fact[n] << endl;
  return 0;
}
