#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = MOD;
double dp[51][51][51];
int n;
vector<int> a;
double calcProb(int sum, int summand_cnt, int not_participate_index) {
  memset(dp, 0.0, sizeof(dp));
  dp[0][0][0] = 1.0;
  double right = n - summand_cnt - 1;
  for (int i = 0, was = 0; i < n; ++i, ++was) {
    if (i == not_participate_index) {
      --was;
      for (int j = 0; j <= summand_cnt; ++j)
        for (int s = 0; s <= sum; ++s) {
          dp[i + 1][j][s] = dp[i][j][s];
        }
      continue;
    }
    double empty = n - was - 1;
    dp[i + 1][0][0] = (right - was) / empty * dp[i][0][0];
    for (int j = 1; j <= min(summand_cnt, was + 1); ++j) {
      for (int s = 0; s <= sum; ++s) {
        dp[i + 1][j][s] = (right - was + j) / empty * dp[i][j][s];
        if (s >= a[i] && j) {
          dp[i + 1][j][s] +=
              (summand_cnt - j + 1) / empty * dp[i][j - 1][s - a[i]];
        }
      }
    }
  }
  return dp[n][summand_cnt][sum];
}
int main() {
  cin >> n;
  a.resize(n);
  int sum = 0;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    sum += a[i];
  }
  int p;
  cin >> p;
  if (sum <= p) {
    cout << n << endl;
    return 0;
  }
  double res = 0.0;
  for (int i = 0; i < n; ++i) {
    for (int j = 1; j < n; ++j) {
      double cur_sum = 0.0;
      calcProb(p, j, i);
      for (int s = max(p - a[i] + 1, 1); s <= p; ++s) {
        cur_sum += dp[n][j][s];
      }
      res += j * cur_sum / n;
    }
  }
  printf("%0.6lf\n", res);
  return 0;
}
