#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void umax(T &a, T b) {
  if (a < b) a = b;
}
const int maxn = 100000 + 5;
const int INF = 1e9 + 7;
double dp[55][55][55];
int a[55];
double fact[55];
inline void solve(void) {
  int n, p;
  cin >> n;
  for (int i = (0); i < (n); i++) cin >> a[i];
  cin >> p;
  fact[0] = 1.0;
  for (int i = (1); i < (55); i++) fact[i] = (fact[i - 1] * i * 1.0);
  sort(a, a + n);
  for (int i = (0); i < (n + 1); i++) dp[i][0][0] = 1;
  double ans = 0.0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= i; j++) {
      for (int k = 1; k <= p; k++) {
        dp[i][j][k] += dp[i - 1][j][k];
        if (k >= a[i - 1]) dp[i][j][k] += (dp[i - 1][j - 1][k - a[i - 1]]);
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int k = p; k > 0; k--) {
      if (dp[n][i][k] > 0) {
        ans = ans + dp[n][i][k] * fact[n - i] * fact[i];
      }
    }
  }
  printf("%.10lf\n", ans / (fact[n]));
}
void init() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
}
int main(int argc, const char *argv[]) {
  init();
  solve();
  return 0;
}
