#include <cstdio>

typedef long long ll;

const int MAXN = 40 + 1;

ll dp[MAXN][MAXN][MAXN * MAXN];
ll s[MAXN][MAXN][MAXN * MAXN];
ll com[MAXN][MAXN];

int main(){
	dp[0][0][0] = 1;
	for (int i = 0; i < MAXN - 1; ++i)
		for (int j = i; j >= 0; --j)
			for (int k = j * (j + 1) >> 1; k >= 0; --k){
				ll t = dp[i][j][k];
				for (int det = 0, l = 1; i + l < MAXN; det += l, ++l){
					dp[i + l][j + l - 1][k + det] += t;
					s[i + l][j + l - 1][k + det] += t * l;
				}
			}
	for (int i = 0; i < MAXN; ++i){
		com[i][0] = com[i][i] = 1;
		for (int j = 1; j < i; ++j)
			com[i][j] = com[i - 1][j - 1] + com[i - 1][j];
	}

	int cas;
	scanf("%d", &cas);
	while (cas--){
		int n, m;
		scanf("%d%d", &n, &m);
		double ans = 0.0;
		int tot = n * n;
		for (int i = 0; i < m; ++i){
			ll e = 0;
			double t = 0;
			for (int j = i; j < m; ++j)
				e += com[n - i][j - i] * (j - i & 1 ? -1 : 1);
			for (int j = i * (i + 1) >> 1; j >= 0; --j)
				t += s[n][i][j] * (double)j / (tot - j);
			ans += e * t;
		}
		printf("%.12f\n", ans += 1.0);
	}
	return 0;
}
