#include <bits/stdc++.h>
int a[60], n, len;
double fact[60];
double dp[60][60][60][60];
bool fl[60][60][60][60];
double cal1(int ind);
double cal(int ind, int rem, int len, int piv);
int main() {
  int i, j, k, l, test, t = 1;
  fact[0] = fact[1] = 1;
  for (i = 2; i <= 50; i++) {
    fact[i] = fact[i - 1] * (double)i;
  }
  scanf("%d", &n);
  int sum = 0;
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    sum += a[i];
  }
  scanf("%d", &l);
  len = l;
  if (sum <= l) {
    printf("%d\n", n);
    return 0;
  }
  double ans = 0, ans1;
  for (i = 1; i <= n; i++) {
    ans += cal1(i);
  }
  printf("%.8lf\n", ans);
  return 0;
}
double cal1(int ind) {
  int i, j, k, l;
  double ret = 0, ret1;
  for (i = 1; i <= n; i++) {
    for (k = len; k >= 0; k--) {
      if (k + a[ind] <= len) break;
      ret1 = (double)cal(n, k, i, ind) * fact[i];
      ret1 /= fact[n];
      ret1 *= (double)i;
      ret1 *= fact[n - i - 1];
      ret += ret1;
    }
  }
  return ret;
}
double cal(int ind, int rem, int len, int piv) {
  if (rem == 0 && len == 0) return 1;
  if (rem <= 0 || len <= 0 || ind <= 0) return 0;
  if (fl[ind][rem][len][piv]) return dp[ind][rem][len][piv];
  fl[ind][rem][len][piv] = 1;
  if (piv == ind) return dp[ind][rem][len][piv] = cal(ind - 1, rem, len, piv);
  return dp[ind][rem][len][piv] = cal(ind - 1, rem, len, piv) +
                                  cal(ind - 1, rem - a[ind], len - 1, piv);
}
