#include <bits/stdc++.h>
using namespace std;
int n, p;
int ara[60];
int freq[60];
int csum[60];
double dp[55][55][55][55];
bool vis[55][55][55][55];
double fii[55];
double fact(int yo) { return fii[yo]; }
double func(int target, int pos, int make, int restricted, int nisi) {
  if (make == target) {
    if (nisi == n) {
      return (double)nisi * fact(nisi);
    }
    double ans = (double)nisi * fact(nisi) *
                 (double)(csum[p - target + 1] - restricted) *
                 fact(n - nisi - 1);
    return ans;
  }
  if (pos == n) return 0;
  if (vis[pos][make][restricted][nisi]) {
    return dp[pos][make][restricted][nisi];
  }
  double ans = 0;
  if (make + ara[pos] <= target) {
    if (ara[pos] > p - target) {
      ans += func(target, pos + 1, make + ara[pos], restricted + 1, nisi + 1);
    } else {
      ans += func(target, pos + 1, make + ara[pos], restricted, nisi + 1);
    }
  }
  ans += func(target, pos + 1, make, restricted, nisi);
  vis[pos][make][restricted][nisi] = 1;
  return dp[pos][make][restricted][nisi] = ans;
}
int main() {
  std::ios_base::sync_with_stdio(false);
  ;
  fii[0] = 1;
  for (int i = 1; i <= 50; i++) {
    fii[i] = (double)i * fii[i - 1];
  }
  cin >> n;
  for (int i = 0; i <= n - 1; i++) {
    cin >> ara[i];
    freq[ara[i]]++;
  }
  for (int i = 50; i >= 0; i--) {
    csum[i] = csum[i + 1] + freq[i];
  }
  cin >> p;
  double ans = 0;
  for (int i = 1; i <= p; i++) {
    memset((vis), 0, sizeof(vis));
    ans += func(i, 0, 0, 0, 0);
  }
  for (int i = 1; i <= n; i++) {
    ans /= i;
  }
  cout << fixed << setprecision(12) << ans;
  return 0;
}
