#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int MAXN = 5e5 + 100;
const int MAXM = 3e3 + 10;
template < typename T > inline void read(T &x) {
x = 0; T ff = 1, ch = getchar();
while(!isdigit(ch)) {
if(ch == ‘-‘) ff = -1;
ch = getchar();
}
while(isdigit(ch)) {
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
x *= ff;
}
template < typename T > inline void write(T x) {
if(x < 0) putchar(‘-‘), x = -x;
if(x > 9) write(x / 10);
putchar(x % 10 + ‘0‘);
}
ll T, n, a, b;
pair < ll, ll > calc(ll n, ll m) {
if(n == 0) return make_pair(0, 0);
ll len = 1LL << (n - 1), size2 = 1LL << (2 * n - 2); // n - 1级城市中的边长和房屋数
pair < ll, ll > id = calc(n - 1, m % size2);
ll x = id.first, y = id.second;
int u = m / size2; // 判断第几区域
if(u == 0) return make_pair(y, x);
if(u == 1) return make_pair(x, y + len);
if(u == 2) return make_pair(x + len, y + len);
if(u == 3) return make_pair(2 * len - y - 1, len - x - 1);
}
int main() {
read(T);
while(T--) {
read(n); read(a); read(b);
pair < ll, ll > aa = calc(n, a - 1);
pair < ll, ll > bb = calc(n, b - 1);
ll dx = aa.first - bb.first, dy = aa.second - bb.second;
double ans = sqrt(dx * dx + dy * dy) * 10;
printf("%0.lf\n", ans);
}
return 0;
}