#include <bits/stdc++.h>
using namespace std;
const int MaxN = 55;
int N, P, Value[MaxN], MaxV;
double DP[2][MaxN][2 * MaxN][MaxN], Solution;
void Solve() {
  sort(Value + 1, Value + N + 1);
  MaxV = Value[N];
  DP[0][0][0][0] = 1.0;
  for (int i = 1; i <= N; ++i) {
    memset(DP[1], 0, sizeof(DP[1]));
    for (int k = 0; k <= i; ++k) {
      for (int p = 0; p <= P + MaxV; ++p) {
        for (int v = 0; v <= MaxV; ++v) {
          DP[1][k][p][v] += DP[0][k][p][v] * (i - k) / i;
          if (Value[i] <= p && k > 0) {
            DP[1][k][p][v] += DP[0][k - 1][p - Value[i]][v] * (k - 1) / i;
            DP[1][k][p][Value[i]] += DP[0][k - 1][p - Value[i]][v] / i;
          }
        }
      }
    }
    memcpy(DP[0], DP[1], sizeof(DP[1]));
  }
  int TotalP = 0;
  for (int i = 1; i <= N; ++i) TotalP += Value[i];
  if (TotalP <= P) Solution += N;
  for (int n = 1; n <= N; ++n)
    for (int p = P + 1; p <= P + MaxV; ++p)
      for (int v = p - P; v <= MaxV; ++v) Solution += DP[0][n][p][v] * (n - 1);
}
void Read() {
  assert(scanf("%d", &N) == 1);
  for (int i = 1; i <= N; ++i) assert(scanf("%d", &Value[i]) == 1);
  assert(scanf("%d", &P) == 1);
}
void Print() { printf("%.7lf\n", Solution); }
int main() {
  Read();
  Solve();
  Print();
  return 0;
}
