#include <bits/stdc++.h>
using namespace std;
double f[55][55][2550];
int a[55];
int min(int a, int b) {
  if (a < b) return a;
  return b;
}
double curr = 0;
double s[55];
int n, p;
void optimize() {
  s[0] = 1;
  for (int i = 1; i < 51; i++) s[i] = s[i - 1] * i;
  for (int pos = 1; pos <= n; pos++) {
    memset(f, 0, sizeof f);
    f[0][0][0] = 1;
    for (int i = 0; i < n; i++)
      for (int j = 0; j <= n; j++)
        for (int l = 0; l <= 2501; l++) {
          f[i + 1][j][l] += f[i][j][l];
          if (i + 1 != pos) f[i + 1][j + 1][l + a[i + 1]] += f[i][j][l];
        }
    for (int i = 0; i <= n; i++)
      for (int j = 0; j <= 251; j++) {
        if (j <= p && j + a[pos] > p && f[n][i][j] > 0 && n - i - 1 >= 0) {
          double tmo = 1;
          tmo /= s[n];
          tmo *= i * s[n - i - 1] * s[i] * f[n][i][j];
          curr += tmo;
        }
      }
  }
}
void solve() { printf("%lf", curr); }
int main() {
  scanf("%d", &n);
  int curr = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    curr += a[i];
  }
  scanf("%d", &p);
  if (curr <= p) {
    printf("%d", n);
    return 0;
  }
  optimize();
  solve();
}
