#include using namespace std; typedef pair pii; typedef long long ll; const int N = 2000010, MOD = 998244353, INF = 0x3f3f3f3f; int n, m, w[N]; ll x, y; void solve() { int p = (int)log2(x) + 1; ll t = 1ll << p - 1, res = t - 1; const ll cp = p, cx = x; if (y == cp) res += x - t; else { ll l = t, r = t + (1ll << cp - 1) - 1, f = 0; for (int i = cp - 1; i >= y; i--) { f++, res++; if (i == y) { res += max(0ll, abs(t - x) - f); } else if ((x >> i - 1) & 1) { l += (1ll << (i - 1)); if (t < l) { ll c = min(abs(t - l), f); f -= c; res += abs(t - l) - c; t = l; } else if (t > r) { ll c = min(abs(t - r), f); f -= c; res += abs(t - r) - c; t = r; } } else { r -= (1ll << (i - 1)); if (t != r + 1) { ll c = min(abs(t - r - 1), f); f -= c; res += abs(t - r - 1) - c; t = r + 1; } f = 0; } // printf("!! %lld %lld %lld %lld\n", l, r, t, res); } } printf("%lld\n", res); } int main() { // for (int i = 1; i <= 128; i++) { // printf("%3d ", i); // for (int j = 1; j < 9; j++) // putchar(i >> (j - 1) & 1 ? 'X' : ' '); // puts(""); // } // return 0; int T; scanf("%d", &T); while (T--) { scanf("%lld%lld", &x, &y); solve(); } return 0; }