#include <bits/stdc++.h>
using namespace std;
long double dp[51][51][51];
long double ker[100];
int main() {
  int n;
  cin >> n;
  vector<int> a(n);
  long long sum = 0;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    sum += a[i];
  }
  ker[0] = 1;
  for (int i = 1; i < 100; ++i) {
    ker[i] = ker[i - 1] * i;
  }
  sort(a.begin(), a.end());
  int p;
  cin >> p;
  if (sum <= p) {
    cout << n << '\n';
    return 0;
  }
  dp[0][0][0] = 1;
  long double cute = 0;
  for (int x = 0; x < n; ++x) {
    for (int i = 0; i <= n; ++i) {
      for (int j = 0; j <= n; ++j) {
        for (int k = 0; k <= p; ++k) {
          dp[i][j][k] = 0;
        }
      }
    }
    dp[0][0][0] = 1;
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
        for (int k = 0; k <= p; ++k) {
          dp[i][j + 1][k] += dp[i][j][k];
          if (j != x && p - k >= a[j]) {
            dp[i + 1][j + 1][k + a[j]] += dp[i][j][k];
          }
        }
      }
    }
    for (int i = 0; i < n; ++i) {
      for (int k = 0; k <= p; ++k) {
        if ((i == n || p - k < a[x]) && n - i - 1 >= 0) {
          cute += i * ker[i] * ker[n - i - 1] * dp[i][n][k];
        }
      }
    }
  }
  cute /= ker[n];
  cout << fixed;
  cout << setprecision(10) << cute << '\n';
}
