#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
const int N=310,M=1000010,P=1e9+7;
const int inf=0x3f3f3f3f;
const int INF=0xcfcfcfcf;
const db eps=1e-9,pi=asin(1)*2;
inline ll read();
#define cmax(a,b) a=max(a,b)
#define cmin(a,b) a=min(a,b)
inline int ADD(int a,int b) { return a+b>=P?a+b-P:a+b; }
inline int MINUS(int a,int b) { return a-b<0?a-b+P:a-b; }
#define plus(a,b) a=ADD(a,b)
#define minus(a,b) a=MINUS(a,b)
#define mul(a,b) a=(1ll*a*(b))%P
#define mem(a,b) memset(a,b,sizeof(a))
#define pii pair<int,int>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pll pair<ll,ll>
#define mp(x,y) make_pair(x,y)

int n,c,sum=1;
int l[N];
db dp[N][(1<<6)|10];

#ifdef FILE
const int RS=1<<20;
char buf[RS],*p1=buf,*p2=buf;
#define getchar() p1==p2&&(p2=(p1=buf)+fread(buf,1,RS,stdin),p1==p2)?EOF:*p1++
#endif
inline ll read()
{
	ll s=0;
	bool flag=false;
	char ch=getchar();
	for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') flag=true;
	for(;'0'<=ch&&ch<='9';ch=getchar()) s=(s<<3)+(s<<1)+(ch^'0');
	if(flag) return -s;
	return s;
}

int main()
{
#ifdef FILE
	freopen(FILE ".in","r",stdin);
	freopen(FILE ".out","w",stdout);
#endif
	n=read(),c=read(),sum=1;
	for(int i=1;i<=n;i++) l[i]=read();
	for(int i=1;i<n;i++) sum*=i;
	sort(l+1,l+n+1);
	db ans=0;
	for(int i=1;i<=sum;i++)
	{
		mem(dp,0);
		dp[l[n]*n][0]=1;
		for(int i=1;i<=c*n;i++)
		{
			if(i%n==0) continue;
			int p=i%n;
			for(int j=i;j<=c*n;j++)
			{
				for(int S=0;S<(1<<n-1);S++)
				{
					if(S&(1<<p-1)) continue;
					dp[min(c*n,max(j,i+l[p]*n))][S+(1<<p-1)]+=dp[j][S];
				}
			}
		}
		ans+=dp[c*n][(1<<n-1)-1];
		next_permutation(l+1,l+n);
	}
	printf("%.15lf\n",ans/sum/pow(c,n-1));
	return 0;
}