#include <iostream>
#define int long long
using namespace std;
constexpr int N = 2e5 + 5;
constexpr int lg = 59;
int T, n, x, k, fl;
inline int down(int x, int k) {
int r = x, ans = 1;
for (int i = 1; i <= lg; ++i) {
if (r * 2 + 1 <= n) r = r * 2 + 1;
else if (r * 2 <= n) r = r * 2;
else break;
}
for (int i = 1; i <= k; ++i)
if (x * 2 + 1 <= r) ans <<= 1, x = x * 2 + 1;
else {
ans = ans * 2 - 1;
if (n > r || i != k) ans = 0;
break;
}
return ans;
}
int dfs(int u, int k, int op) {
if (u > n || u < 1) return 0;
if (k == 0) return 1;
if (op == 0) return down(u, k);
if (op == 1) return dfs(u * 2 + 1, k - 1, 0) + dfs(u / 2, k - 1, (u & 1ll ? 2 : 1));
if (op == 2) return dfs(u * 2, k - 1, 0) + dfs(u / 2, k - 1, (u & 1ll ? 2 : 1));
return dfs(u * 2, k - 1, 0) + dfs(u * 2 + 1, k - 1, 0) + dfs(u / 2, k - 1, (u & 1ll ? 2 : 1));
}
signed main() {
cin >> T;
while (T--) {
cin >> n >> x >> k;
cout << dfs(x, k, 3) << '\n';
}
return 0;
}