#include <bits/stdc++.h>
using namespace std;
long long dp[51][51];
int m[51];
int p;
int n;
void prn() {
  for (int k = 0; k < n; k++) {
    for (int j = 0; j <= p; j++) cout << dp[k][j] << ' ';
    cout << endl;
  }
  cout << endl;
}
void prepare(int b) {
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= p; j++) dp[i][j] = 0;
  dp[0][0] = 1;
  for (int i = 0; i < n; i++) {
    if (i == b) continue;
    for (int j = p; j >= 0; j--)
      for (int k = 0; k < n; k++) {
        if (dp[k][j] > 0 && j + m[i] <= p) {
          dp[k + 1][j + m[i]] += dp[k][j];
        }
      }
  }
}
double cal(int d) {
  double ret = n;
  for (int i = 1; i < n - d; i++) ret *= (double)(i + d) / i;
  return ret;
}
int main() {
  cin >> n;
  long long acc[51];
  for (int i = 0; i <= n; i++) acc[i] = 0;
  long long tot = 0;
  for (int i = 0; i < n; i++) {
    cin >> m[i];
    tot += m[i];
  }
  cin >> p;
  if (tot <= p) {
    cout << n << endl;
    return 0;
  }
  for (int i = 0; i < n; i++) {
    prepare(i);
    for (int j = 0; j <= p; j++)
      if (m[i] + j > p) {
        for (int k = 0; k < n; k++) acc[k] += dp[k][j];
      }
  }
  double ret = 0;
  for (int i = 0; i < n; i++) {
    ret += (double)i * acc[i] / cal(i);
  }
  cout << ret << endl;
  return 0;
}
