#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  int n;
  cin >> n;
  vector<double> a(n);
  double s = 0.0;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    s += a[i];
  }
  double p;
  cin >> p;
  if (s <= p) {
    cout << n;
    return 0;
  }
  if (n == 1) {
    cout << "0";
    return 0;
  }
  vector<double> sil(n + 1);
  sil[0] = sil[1] = 1;
  for (int i = 2; i < n + 1; ++i) sil[i] = sil[i - 1] * (double)i;
  double odp = 0.0;
  for (int i = 0; i < n; ++i) {
    vector<double> t;
    for (int j = 0; j < n; ++j)
      if (j != i) t.push_back(a[j]);
    double dp[51][51][51];
    for (int j = 0; j < 51; ++j)
      for (int k = 0; k < 51; ++k)
        for (int l = 0; l < 51; ++l) dp[j][k][l] = 0.0;
    if (t[0] <= p) dp[0][1][(int)t[0]] = 1.0;
    for (int j = 0; j < (int)t.size() - 1; ++j) {
      for (int k = 1; k < 50; ++k) {
        for (int l = 1; l < 51; ++l) {
          if (l + t[j + 1] <= p)
            dp[j + 1][k + 1][l + (int)t[j + 1]] += dp[j][k][l];
          dp[j + 1][k][l] += dp[j][k][l];
        }
      }
      if (t[j + 1] <= p) ++dp[j + 1][1][(int)t[j + 1]];
    }
    for (int j = 1; j <= t.size(); ++j)
      for (int k = 1; k <= p; ++k)
        if (k + a[i] > p)
          odp += dp[(int)t.size() - 1][j][k] * sil[j] * sil[n - (j + 1)] *
                 (double)j;
  }
  odp /= sil[n];
  cout.setf(std::ios_base::fixed);
  cout.precision(6);
  cout << odp;
  return 0;
}
