#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define sl(n) scanf("%lld", &n)
#define for1(i, stop) for(ll i = 1; i <= stop; ++i)
#define rep1(i, start) for(ll i = start; i >= 1; --i)
#define pf printf
const ll sz = 1e4 + 10;
ll a[sz], cnt[sz];
double dp[sz];
int main()
{
ll t;
cin >> t;
while(t--) {
ll n, c;
sl(n), sl(c);
for1(i, n) sl(a[i]);
sort(a+1, a+n+1);
for(ll i = 0; i <= c; i++) dp[i] = cnt[i] = 0;
rep1(i, n) {
ll l = i;
for(ll j = i; j >= 1; j--) {
if(a[j] != a[i])
break;
l = j;
}
ll tot = i-l+1;
for(ll x = c; x >= a[i]; x--) {
ll nxt = x-a[i];
if(cnt[nxt] == 0)
dp[x] += tot;
else
dp[x] += (tot + tot*(double)1/cnt[nxt] * dp[nxt]);
cnt[x] += (i-l+1);
}
i = l;
}
pf("%0.9f\n", (double)1/n*dp[c]);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHNsKG4pIHNjYW5mKCIlbGxkIiwgJm4pCiNkZWZpbmUgZm9yMShpLCBzdG9wKSBmb3IobGwgaSA9IDE7IGkgPD0gc3RvcDsgKytpKQojZGVmaW5lIHJlcDEoaSwgc3RhcnQpIGZvcihsbCBpID0gc3RhcnQ7IGkgPj0gMTsgLS1pKQojZGVmaW5lIHBmIHByaW50ZgoKY29uc3QgbGwgc3ogPSAxZTQgKyAxMDsKbGwgYVtzel0sIGNudFtzel07CmRvdWJsZSBkcFtzel07CgppbnQgbWFpbigpCnsKICAgIGxsIHQ7CiAgICBjaW4gPj4gdDsKCiAgICB3aGlsZSh0LS0pIHsKICAgICAgICBsbCBuLCBjOwogICAgICAgIHNsKG4pLCBzbChjKTsKCiAgICAgICAgZm9yMShpLCBuKSBzbChhW2ldKTsKICAgICAgICBzb3J0KGErMSwgYStuKzEpOwoKICAgICAgICBmb3IobGwgaSA9IDA7IGkgPD0gYzsgaSsrKSBkcFtpXSA9IGNudFtpXSA9IDA7CgogICAgICAgIHJlcDEoaSwgbikgewoKICAgICAgICAgICAgbGwgbCA9IGk7CiAgICAgICAgICAgIGZvcihsbCBqID0gaTsgaiA+PSAxOyBqLS0pIHsKICAgICAgICAgICAgICAgIGlmKGFbal0gIT0gYVtpXSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBsID0gajsKICAgICAgICAgICAgfQogICAgICAgICAgICBsbCB0b3QgPSBpLWwrMTsKCiAgICAgICAgICAgIGZvcihsbCB4ID0gYzsgeCA+PSBhW2ldOyB4LS0pIHsKICAgICAgICAgICAgICAgIGxsIG54dCA9IHgtYVtpXTsKCiAgICAgICAgICAgICAgICBpZihjbnRbbnh0XSA9PSAwKQogICAgICAgICAgICAgICAgICAgIGRwW3hdICs9IHRvdDsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBkcFt4XSArPSAodG90ICsgdG90Kihkb3VibGUpMS9jbnRbbnh0XSAqIGRwW254dF0pOwoKICAgICAgICAgICAgICAgIGNudFt4XSArPSAoaS1sKzEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpID0gbDsKICAgICAgICB9CgogICAgICAgIHBmKCIlMC45ZlxuIiwgKGRvdWJsZSkxL24qZHBbY10pOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==