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

using namespace std;

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

double F[257][311][311];

int A1[257], A2[257], B[33][33], tim = -1;

int main() {
    scanf("%d%d", &n, &C);
    for(int i = 0; i < n; i++) scanf("%d", &L[i]);
    for(int i = 0; i < (1 << (n - 1)); i++)
        for(int j = 0; j < (1 << (n - 1)); j++)
            if(__builtin_popcount(i) == __builtin_popcount(j)) {
                A1[++tim] = i;
                A2[tim] = j;
                B[i][j] = tim;
            }
    sort(L, L + n);
    fir = L[n - 1];
    memset(F, 0, sizeof F);
    F[0][0][0] = 1;
    for(int S = 0; S < tim; S++) {
        int s = A1[S], s2 = A2[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 nxt2 = 0; nxt2 < n - 1; nxt2++) if(!((s2 >> nxt2) & 1))
                            for(int j = i / n * n + (nxt2 + 1) + (nxt2 + 1 < i % n) * n; j < C * n; j += n)
                                F[B[s + (1 << nxt)][s2 + (1 << nxt2)]][j][k >= j - L[nxt] * n ? j : k] += F[S][i][k];
    }
    double ans = 0;
    for(int i = (C - fir) * n; i < C * n; i++)
        for(int j = (C - fir) * n; j <= i; j++)
            ans += F[tim][i][j];
    for(int i = 1; i < n; i++) ans /= i;
    printf("%.15lf\n", ans / pow(C, n - 1));
    return 0;
}
