import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### # m = 7 # for n in range(0, 1 << m): # s = [] # for j in range(m): # if n >> j & 1: # s.append("O") # else: # s.append(" ") # print("".join(s)) """ C が R の最上位 bitじゃない R を増やして 最上位bitに移動する 最上位に隣接していればいい """ def solve(r, c): f = 0 cnt = 0 mx = -1 for i in range(m-1, -1, -1): if f == 0 and r >> i & 1: f = 1 mx = i elif f == 1 and r >> i & 1 ^ 1: f = 2 if f == 1: cnt += 1 if f == 1 and c == i: return r - 1 # print(r, c) if r >> (c + 1) & 1: if (r + 1) >> (c + 1) & 1: return solve(r+1, c+1) + 1 else: return solve(r, c+1) + 1 toR = (1 << (mx + 1)) - (1 << (mx - cnt)) # print(bin(r)) return toR - 1 + max(toR - r, mx - cnt - c) m = 62 for _ in range(ni()): r, c = na() print(solve(r, c-1))