#include <bits/stdc++.h>
using namespace std;
inline void read(int &first) {
  first = 0;
  while (1) {
    char ch = getchar();
    if (ch == ' ' || ch == '\n') break;
    first = first * 10 + ch - '0';
  }
}
inline void write(int first) {
  char wr[12];
  int k = 0;
  if (!first) ++k, wr[k] = '0';
  while (first) {
    ++k;
    wr[k] = char(first % 10 + '0');
    first /= 10;
  }
  for (int i = k; i >= 1; --i) putchar(wr[i]);
}
const int N = 52;
int n, a[N], s, p;
double dp[N][N][N], f[N], ans;
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> a[i], s += a[i];
  cin >> p;
  f[0] = 1;
  for (int i = 1; i <= n; ++i) f[i] = f[i - 1] * i;
  if (s <= p) return cout << n, 0;
  for (int pos = 1; pos <= n; ++pos) {
    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 + 1][j][k] += dp[i][j][k];
          if (i + 1 != pos && k + a[i + 1] <= p)
            dp[i + 1][j + 1][k + a[i + 1]] += dp[i][j][k];
        }
    for (int j = 0; j <= n; ++j)
      for (int k = 0; k <= p; ++k)
        if (k + a[pos] > p) ans += dp[n][j][k] * f[j] * f[n - j - 1] * j;
  }
  cout.precision(4);
  cout << fixed << ans / f[n];
}
