#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
int n, a[55], ck[55], vis[55][55][55], cs;
long double dp[55][55][55], fac[55];
long double go(int u, int tk, int pt) {
  if (tk == 0 && pt == 0) return 1.00;
  if (u == n || tk < 0 || pt < 0) return 0.00;
  if (vis[u][tk][pt] == cs) return dp[u][tk][pt];
  vis[u][tk][pt] = cs;
  dp[u][tk][pt] = go(u + 1, tk, pt);
  if (ck[u] == 0) dp[u][tk][pt] += go(u + 1, tk - a[u], pt - 1);
  return dp[u][tk][pt];
}
long double DP[55];
int same[55];
int main() {
  fac[0] = 1;
  for (int i = 1; i < 51; i++) fac[i] = fac[i - 1] * i;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int p;
  cin >> p;
  sort(a, a + n);
  long double ans = 0.00;
  cs++;
  for (int i = 0; i < p; i++) ans += n * go(0, p - i, n) * fac[n];
  for (int i = 0; i < n; i++) {
    if (same[a[i]] == 1) ans += DP[a[i]];
    ck[i] = 1;
    cs++;
    for (int faka = 0; faka < a[i]; faka++) {
      for (int koyta = 1; koyta < n; koyta++) {
        ans += koyta * go(0, p - faka, koyta) * fac[n - koyta - 1] * fac[koyta];
      }
    }
    ck[i] = 0;
  }
  ans /= fac[n];
  cout << fixed << setprecision(20) << ans << endl;
  return 0;
}
