#include <bits/stdc++.h>
using namespace std;
int n, m, sum;
int w[54];
double dp[54][54][104], c[54], ans[54][54];
void read() {
  sum = 0.0;
  int i;
  for (i = 1; i <= n; ++i) {
    scanf("%d%*c", &w[i]);
    sum += w[i];
  }
  scanf("%d%*c", &m);
}
void init() {
  c[0] = 1;
  int i;
  for (i = 1; i <= 50; ++i) {
    c[i] = c[i - 1] * double(i);
  }
}
void print(int x) {
  printf("%d: \n", x);
  int i, j, k;
  for (i = 1; i <= x; ++i) {
    for (j = 1; j <= x; ++j) {
      for (k = 1; k <= 6; ++k) {
        printf("%d %d %d:  %.4lf\n", i, j, k, dp[i][j][k]);
      }
    }
  }
}
void solve() {
  int i, j, k, s;
  for (i = 1; i <= n; ++i) {
    for (j = i - 1; j > 0; --j) {
      for (s = m + 50; s >= 0; --s) {
        for (k = 1; k < i; ++k) {
          if (s <= m) {
            dp[j + 1][i][s + w[i]] += dp[j][k][s];
          }
          if (s + w[i] - w[k] <= m) {
            dp[j + 1][k][s + w[i]] += (dp[j][k][s] * j);
          }
        }
      }
    }
    dp[1][i][w[i]] += 1.0;
  }
}
void print_ans() {
  double ans = 0;
  int i, j, k;
  if (sum > m) {
    for (i = 1; i <= n; ++i) {
      for (j = 1; j <= n; ++j) {
        for (k = 1; k <= 50; ++k) {
          if (dp[i][j][m + k] != 0) {
            ans += (dp[i][j][m + k] * c[n - i] * double(i - 1));
          }
        }
      }
    }
    printf("%lf\n", ans / c[n]);
  } else {
    printf("%lf\n", double(n));
  }
}
int main() {
  init();
  while (scanf("%d%*c", &n) != EOF) {
    read();
    solve();
    print_ans();
    memset(dp, 0, sizeof(dp));
  }
  return 0;
}
