#include <bits/stdc++.h>
using namespace std;
long double nume, deno, occ[64], fact[64], dp[128][128][128];
int n, total, len[64];
long double ans;
void precompute(void) {
  fact[0] = 1;
  for (int i = 1; i <= 50; i++) fact[i] = i * fact[i - 1];
}
int cur;
void doit(void) {
  int i, j, k;
  memset(dp, 0, sizeof(dp));
  dp[0][0][0] = 1;
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      for (k = 0; k <= total; k++) {
        if (i == cur)
          dp[i + 1][j][k] = dp[i][j][k];
        else if (dp[i][j][k]) {
          if (k + len[cur] <= total)
            dp[i + 1][j + 1][k + len[i]] += dp[i][j][k];
          dp[i + 1][j][k] += dp[i][j][k];
        }
      }
    }
  }
  for (j = 0; j < n; j++) {
    for (k = 0; k + len[cur] <= total; k++)
      nume += dp[n][j][k] * fact[j] * fact[n - j - 1];
  }
}
int main() {
  int i;
  precompute();
  while (scanf("%d", &n) != EOF) {
    for (i = 0; i < n; i++) scanf("%d", &len[i]);
    for (i = 0; i <= n; i++) occ[i] = 0;
    scanf("%d", &total);
    nume = 0;
    int sum = 0;
    for (i = 0; i < n; i++) sum += len[i];
    sort(len, len + n);
    for (i = 0; i < n; i++) {
      cur = i;
      doit();
    }
    deno = fact[n];
    ans = ((long double)nume) / ((long double)deno);
    cout << ans;
  }
  return 0;
}
