#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:200000000")
using namespace std;
const int INF = (int)1e9;
const long long INF64 = (long long)1e18;
const long double eps = 1e-9;
const long double pi = 3.14159265358979323846;
int a[55], p;
long double dp[55][55][55];
long double fact[55];
int main() {
  int n;
  cin >> n;
  int sum = 0;
  for (int i = 0; i < int(n); ++i) {
    cin >> a[i];
    sum += a[i];
  }
  cin >> p;
  if (sum <= p) {
    printf("%d", n);
    return 0;
  }
  for (int i = 0; i < int(55); ++i) {
    if (!i) {
      fact[i] = 1;
      continue;
    }
    fact[i] = i * fact[i - 1];
  }
  long double answer = 0;
  for (int last = 0; last < int(n); ++last) {
    swap(a[last], a[n - 1]);
    memset(dp, 0, sizeof(dp));
    dp[0][0][0] = 1;
    for (int i = 1; i < n; i++) {
      for (int j = 0; j < n; j++)
        for (int sum = 0; sum <= p; sum++) {
          if (i - 1 >= 0) dp[i][j][sum] += dp[i - 1][j][sum];
          if (i - 1 >= 0 && j - 1 >= 0 && sum - a[i - 1] >= 0)
            dp[i][j][sum] += dp[i - 1][j - 1][sum - a[i - 1]];
        }
    }
    swap(a[last], a[n - 1]);
    for (long double i = 0; i < n; i++) {
      for (int sum = p - a[last] + 1; sum <= p; sum++)
        answer +=
            dp[n - 1][(int)i][sum] * fact[(int)i] * fact[n - 1 - (int)i] * i;
    }
  }
  answer /= fact[n];
  cout.fixed;
  cout.precision(12);
  cout << answer << endl;
}
