#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>

using namespace std;

int n, C, fir, L[7], ord[7];

int F[1 << 5][444][444];

int Solve() {
    memset(F, 0, sizeof F);
    F[0][0][0] = 1;
    for(int s = 0; s < (1 << (n - 1)) - 1; s++)
        for(int i = 0; i < C * n; i++)
            for(int k = 0; k <= i; k++) if(F[s][i][k])
                for(int nxt = 0; nxt < n - 1; nxt++) if(!((s >> nxt) & 1))
                    for(int j = i / n * n + ord[nxt] + (ord[nxt] < i % n) * n; j < C * n; j += n)
                        F[s + (1 << nxt)][j][k >= j - L[nxt] * n ? j : k] += F[s][i][k];
    int ans = 0;
    for(int i = (C - fir) * n; i < C * n; i++)
        for(int j = (C - fir) * n; j <= i; j++)
            ans += F[(1 << (n - 1)) - 1][i][j];
    return ans;
}

int main() {
    scanf("%d%d", &n, &C);
    for(int i = 0; i < n; i++) scanf("%d", &L[i]);
    sort(L, L + n);
    fir = L[n - 1];
    for(int i = 0; i < n - 1; i++) ord[i] = i + 1;
    double ans = 0, tmp = 0;
    do {
        ans += Solve();
    } while(next_permutation(ord, ord + n - 1));
    for(int i = 1; i < n; i++) ans /= i;
    printf("%.15lf\n", ans / pow(C, n - 1));
    return 0;
}
