#include <bits/stdc++.h>
using namespace std;
int N, A[52], M;
long double nfact;
long double P[52][52][102];
int main() {
  cin >> N;
  int sumnow = 0;
  for (int i = 1; i <= N; ++i) {
    cin >> A[i];
    sumnow += A[i];
  }
  cin >> M;
  if (sumnow <= M) {
    cout << N << '\n';
    return 0;
  }
  sort(A + 1, A + N + 1);
  nfact = 1;
  for (int i = 1; i <= N; ++i) nfact /= i;
  long double result = 0;
  for (int pnow = 1; pnow <= N; ++pnow) {
    swap(A[pnow], A[1]);
    memset(P, 0, sizeof(P));
    P[1][0][0] = 1 * nfact;
    for (int i = 2; i <= N; ++i) {
      P[i][0][0] = P[i - 1][0][0];
      for (int j = 1; j < i; ++j)
        for (int k = 1; k <= M; ++k)
          P[i][j][k] =
              P[i - 1][j][k] + (k >= A[i] ? P[i - 1][j - 1][k - A[i]] : 0);
    }
    for (int i = 1; i < N; ++i)
      for (int j = M - A[1] + 1; j <= M; ++j) {
        for (int k = 1; k <= i; ++k) P[N][i][j] *= k;
        for (int k = 1; k <= N - i - 1; ++k) P[N][i][j] *= k;
        result += P[N][i][j] * i;
      }
  }
  cout << fixed << setprecision(8) << result << '\n';
}
