#include <iostream>
#include <map>
#include <cstdio>
using namespace std;
#define maxn 41
long long dp1[maxn][maxn];
int dp2[maxn][maxn];
int colors[maxn];
unsigned long long cost[maxn];
unsigned long long one = 1LL;
int main() {
int t;
cin >> t;
while(t--) {
map<int,int> mapping;
int n, m, ci, color=0;
long long pi;
cin >> n >> m;
for(int i=0;i<=n;++i) {
colors[i] = 0;
cost[i] = 0;
dp1[0][i] = 0;
dp1[i][0] = 0;
dp2[0][i] = 0;
dp2[i][0] = 1;
}
color = 0;
for(int i=0;i<n;++i) {
cin >> ci >> pi;
int j;
if(!mapping[ci]) {
mapping[ci] = ++color;
j = color;
} else j = mapping[ci];
++colors[j];
cost[j] += pi;
}
// denominator
for(int i=1;i<=color;++i) {
for(int j=1;j<=color;++j) {
dp2[i][j] = dp2[i-1][j] + dp2[i-1][j-1]*((one<<colors[i])-1);
}
}
// numerator
for(int i=1;i<=color;++i) {
for(int j=1;j<=color;++j) {
dp1[i][j] = dp1[i-1][j] +
dp1[i-1][j-1]*((one<<colors[i])-1) +
dp2[i-1][j-1]*cost[i]*(one<<(colors[i]-1));
}
}
unsigned long long num=0, den=0;
for(int i=m;i<=color;++i) {
num += dp1[color][i];
den += dp2[color][i];
}
den = max(den,one);
double res = (double)num/(double)den;
printf("%.6lf\n",res);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y3N0ZGlvPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBtYXhuIDQxCmxvbmcgbG9uZyBkcDFbbWF4bl1bbWF4bl07CmludCBkcDJbbWF4bl1bbWF4bl07CmludCBjb2xvcnNbbWF4bl07CnVuc2lnbmVkIGxvbmcgbG9uZyBjb3N0W21heG5dOwp1bnNpZ25lZCBsb25nIGxvbmcgb25lID0gMUxMOwoKaW50IG1haW4oKSB7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgbWFwPGludCxpbnQ+IG1hcHBpbmc7CiAgICAgICAgaW50IG4sIG0sIGNpLCBjb2xvcj0wOwogICAgICAgIGxvbmcgbG9uZyBwaTsKICAgICAgICBjaW4gPj4gbiA+PiBtOwogICAgICAgIGZvcihpbnQgaT0wO2k8PW47KytpKSB7CiAgICAgICAgICAgIGNvbG9yc1tpXSA9IDA7CiAgICAgICAgICAgIGNvc3RbaV0gPSAwOwogICAgICAgICAgICBkcDFbMF1baV0gPSAwOwogICAgICAgICAgICBkcDFbaV1bMF0gPSAwOwogICAgICAgICAgICBkcDJbMF1baV0gPSAwOwogICAgICAgICAgICBkcDJbaV1bMF0gPSAxOwogICAgICAgIH0KICAgICAgICBjb2xvciA9IDA7CiAgICAgICAgZm9yKGludCBpPTA7aTxuOysraSkgewogICAgICAgICAgICBjaW4gPj4gY2kgPj4gcGk7CiAgICAgICAgICAgIGludCBqOwogICAgICAgICAgICBpZighbWFwcGluZ1tjaV0pIHsKICAgICAgICAgICAgICAgIG1hcHBpbmdbY2ldID0gKytjb2xvcjsKICAgICAgICAgICAgICAgIGogPSBjb2xvcjsKICAgICAgICAgICAgfSBlbHNlIGogPSBtYXBwaW5nW2NpXTsKICAgICAgICAgICAgKytjb2xvcnNbal07CiAgICAgICAgICAgIGNvc3Rbal0gKz0gcGk7CiAgICAgICAgfQoKICAgICAgICAvLyBkZW5vbWluYXRvcgogICAgICAgIGZvcihpbnQgaT0xO2k8PWNvbG9yOysraSkgewogICAgICAgICAgICBmb3IoaW50IGo9MTtqPD1jb2xvcjsrK2opIHsKICAgICAgICAgICAgICAgIGRwMltpXVtqXSA9IGRwMltpLTFdW2pdICsgZHAyW2ktMV1bai0xXSooKG9uZTw8Y29sb3JzW2ldKS0xKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbnVtZXJhdG9yCiAgICAgICAgZm9yKGludCBpPTE7aTw9Y29sb3I7KytpKSB7CiAgICAgICAgICAgIGZvcihpbnQgaj0xO2o8PWNvbG9yOysraikgewogICAgICAgICAgICAgICAgZHAxW2ldW2pdID0gZHAxW2ktMV1bal0gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHAxW2ktMV1bai0xXSooKG9uZTw8Y29sb3JzW2ldKS0xKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcDJbaS0xXVtqLTFdKmNvc3RbaV0qKG9uZTw8KGNvbG9yc1tpXS0xKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBudW09MCwgZGVuPTA7CgogICAgICAgIGZvcihpbnQgaT1tO2k8PWNvbG9yOysraSkgewogICAgICAgICAgICBudW0gKz0gZHAxW2NvbG9yXVtpXTsKICAgICAgICAgICAgZGVuICs9IGRwMltjb2xvcl1baV07CiAgICAgICAgfQogICAgICAgIGRlbiA9IG1heChkZW4sb25lKTsKICAgICAgICBkb3VibGUgcmVzID0gKGRvdWJsZSludW0vKGRvdWJsZSlkZW47CiAgICAgICAgcHJpbnRmKCIlLjZsZlxuIixyZXMpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K
OAozIDAKMSAxCjIgMgozIDMKMyAxCjEgMQoyIDIKMyAzCjMgMgoxIDEKMiAyCjMgMwozIDMKMSAxCjIgMgozIDMKNiAwCjEgMiAKMiAzCjIgNAozIDUKMyA2CjMgNwo2IDEKMSAyIAoyIDMKMiA0CjMgNQozIDYKMyA3CjYgMgoxIDIgCjIgMwoyIDQKMyA1CjMgNgozIDcKNiAzCjEgMiAKMiAzCjIgNAozIDUKMyA2CjMgNw==
8
3 0
1 1
2 2
3 3
3 1
1 1
2 2
3 3
3 2
1 1
2 2
3 3
3 3
1 1
2 2
3 3
6 0
1 2
2 3
2 4
3 5
3 6
3 7
6 1
1 2
2 3
2 4
3 5
3 6
3 7
6 2
1 2
2 3
2 4
3 5
3 6
3 7
6 3
1 2
2 3
2 4
3 5
3 6
3 7