#include <bits/stdc++.h>
using namespace std;
int mas[52];
int N, P;
double matr[52][52][52];
double f(int n, int k, int width) {
  if (n == N) {
    if (width == 0 && k == 0) return 1;
    return 0;
  }
  if (matr[n][k][width] != -1) return matr[n][k][width];
  double res = 0;
  if (width - mas[n] >= 0) res += f(n + 1, k - 1, width - mas[n]);
  res += f(n + 1, k, width);
  matr[n][k][width] = res;
  return res;
}
int main() {
  scanf("%d", &N);
  int s = 0;
  double fakt[52];
  fakt[0] = 1;
  for (int i = 1; i < 52; i++) fakt[i] = fakt[i - 1] * i;
  for (int i = 0; i < N; i++) {
    scanf("%d", &mas[i]);
    s += mas[i];
  }
  scanf("%d", &P);
  double res = 0;
  if (s > P) {
    for (int i = 0; i < N; i++) {
      for (int x = 0; x < 52; x++)
        for (int y = 0; y < 52; y++)
          for (int z = 0; z < 52; z++) matr[x][y][z] = -1;
      swap(mas[0], mas[i]);
      int from = P - mas[0] + 1;
      for (int j = from; j <= P; j++) {
        for (int k = 0; k < N; k++) {
          double z = f(1, k, j);
          res = res + z * fakt[k] * fakt[N - 1 - k] * k;
        }
      }
      swap(mas[0], mas[i]);
    }
    res /= fakt[N];
  } else
    res = N;
  printf("%.6lf\n", res);
  return 0;
}
