#include <bits/stdc++.h>
using namespace std;
const int MAXN = 111111;
const int oo = (int)(1e9);
const long double PI = 3.141592653589793;
template <class T>
inline bool chkmin(T &a, T b) {
  return a > b ? a = b, true : false;
}
template <class T>
inline bool chkmax(T &a, T b) {
  return a < b ? a = b, true : false;
}
template <class T>
inline T sqr(T x) {
  return x * x;
}
template <typename T>
T gcd(T x, T y) {
  for (T t; x; t = x, x = y % x, y = t)
    ;
  return y;
}
template <typename TT>
void read(TT &x) {
  char ch;
  for (ch = getchar(); ch > '9' || ch < '0'; ch = getchar())
    ;
  for (x = 0; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - 48;
}
int n, m, a[55];
double f[55][55];
void dp(int x) {
  memset(f, 0, sizeof(f));
  ;
  f[0][0] = 1;
  for (int i = 1; i <= n; i++)
    if (i != x) {
      for (int j = n; j >= 1; j--)
        for (int k = m; k >= a[i]; k--)
          f[j][k] += f[j - 1][k - a[i]] * j / (n - j + 1);
    }
}
void Init() {
  scanf("%d", &n);
  ;
  int s = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    ;
    s += a[i];
  }
  scanf("%d", &m);
  ;
  if (s <= m) {
    cout << n;
    return;
  }
  double ans = 0;
  for (int i = 1; i <= n; i++) {
    dp(i);
    for (int j = 0; j < n; j++)
      for (int k = m - a[i] + 1; k <= m; k++) ans += f[j][k] * j / (n - j);
  }
  printf("%.9lf", ans);
}
int main() {
  clock_t s, t;
  s = clock();
  Init();
  t = clock();
  return 0;
}
