#include <bits/stdc++.h>
using namespace std;
const int MAXN = 60;
const int MAXP = 60;
long long f[MAXN][MAXP];
int n, p;
int a[MAXN];
double gao(double ret, int low, int tot) {
  for (int i = n; i > low; --i) {
    ret /= i;
    while (tot && ret < 1) ret *= tot--;
  }
  return ret;
}
int main() {
  while (~scanf("%d", &n)) {
    int tot = 0;
    for (int i = 0; i < (n); i++) {
      scanf("%d", a + i);
      tot += a[i];
    }
    scanf("%d", &p);
    double ans = n;
    if (tot <= p) {
      printf("%.8f\n", ans);
      continue;
    }
    ans = 0;
    for (int x = 0; x < (n); x++) {
      memset(f, 0, sizeof(f));
      f[0][0] = 1;
      for (int i = 0; i < (n); i++) {
        if (i == x) continue;
        for (int j = n - 1; j > 0; --j) {
          for (int k = p; k >= a[i]; --k) {
            f[j][k] += f[j - 1][k - a[i]];
          }
        }
      }
      for (int j = 0; j < n; ++j)
        for (int k = max(1, p - a[x] + 1); k <= p; ++k) {
          ans += gao(f[j][k] * j, n - 1 - j, j);
        }
    }
    printf("%.8f\n", ans);
  }
  return 0;
}
