#include <bits/stdc++.h>
const double pi = acos(-1.0), e = exp(1.0);
using namespace std;
int a[100], b[100], c[100], d[100], f[100], cnt, N, M;
double ans;
int fac(int x, int dd) {
  for (int i = 1; i <= x; i++) f[i] += dd;
}
int C(int N, int M) {
  fac(N, 1);
  fac(M, -1);
  fac(N - M, -1);
}
int calc(int x, int p, int s) {
  memset(f, 0, sizeof(f));
  int i, t = 0;
  fac(p, 1);
  fac(N, -1);
  for (i = 1; i <= x; i++) C(c[i], d[i]);
  for (i = 1; i <= cnt; i++)
    if (s + b[i] > M) t += c[i] - d[i];
  ++f[t];
  if (!t) return 0;
  fac(N - p - 1, 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 0;
  int i, t, q;
  for (i = 0; i <= c[x]; i++) {
    t = s + b[x] * i;
    q = p + i;
    if (t > M) break;
    d[x] = i;
    if (t == M || x == cnt || i < c[x] && t + b[x] > M) {
      calc(x, q, t);
      continue;
    }
    dfs(x + 1, q, t);
  }
  d[x] = 0;
}
int main() {
  int s = 0, i;
  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);
  for (i = 1; i <= N; i++) {
    if (a[i] != a[i - 1]) b[++cnt] = a[i];
    ++c[cnt];
  }
  dfs(1, 0, 0);
  printf("%.12lf\n", ans);
}
