#include <bits/stdc++.h>
using namespace std;
int a[100], b[100], c[100], f[100], N, M, cnt;
double ans;
int fac(int x, int d) {
  for (int i = 1; i <= x; i++) f[i] += d;
}
int calc(int p, int s) {
  int i, t = 0;
  for (i = 1; i <= cnt; i++)
    if (s + a[i] > M) t += b[i] - c[i];
  if (!t) return 0;
  memset(f, 0, sizeof(f));
  ++f[t];
  for (i = 1; i <= cnt; i++) {
    fac(b[i], 1);
    fac(c[i], -1);
    fac(b[i] - c[i], -1);
  }
  fac(p, 1);
  fac(N - p - 1, 1);
  fac(N, -1);
  double res = 1.0;
  for (i = 1; i <= 50; i++) res *= pow(i, f[i]);
  ans += res * p;
}
int dfs(int x, int p, int s) {
  if (x > cnt) return calc(p, s);
  int i, t;
  for (i = 0; i <= b[x]; i++) {
    t = s + a[x] * i;
    if (t > M) break;
    c[x] = i;
    dfs(x + 1, p + i, t);
  }
  c[x] = 0;
}
int main() {
  int i, s = 0;
  cin >> N;
  for (i = 1; i <= N; i++) {
    cin >> a[i];
    s += a[i];
  }
  cin >> M;
  if (s <= M) {
    cout << N << endl;
    return 0;
  }
  sort(a + 1, a + 1 + N);
  cnt = 1;
  for (i = 1; i <= N; i++) {
    if (a[i] != a[cnt]) a[++cnt] = a[i];
    ++b[cnt];
  }
  dfs(1, 0, 0);
  printf("%.10lf\n", ans);
}
