You are given two integers n and m. Find the \operatorname{MEX} of the sequence n ⊕ 0, n ⊕ 1, …, n ⊕ m. Here, ⊕ is the [bitwise XOR operator](https://en.wikipedia.org/wiki/Bitwise_operation#XOR).

\operatorname{MEX} of the sequence of non-negative integers is the smallest non-negative integer that doesn't appear in this sequence. For example, \operatorname{MEX}(0, 1, 2, 4) = 3, and \operatorname{MEX}(1, 2021) = 0. 

Input

The first line contains a single integer t (1 ≤ t ≤ 30 000) — the number of test cases.

The first and only line of each test case contains two integers n and m (0 ≤ n, m ≤ 10^9).

Output

For each test case, print a single integer — the answer to the problem.

Example

Input


5
3 5
4 6
3 2
69 696
123456 654321


Output


4
3
0
640
530866

Note

In the first test case, the sequence is 3 ⊕ 0, 3 ⊕ 1, 3 ⊕ 2, 3 ⊕ 3, 3 ⊕ 4, 3 ⊕ 5, or 3, 2, 1, 0, 7, 6. The smallest non-negative integer which isn't present in the sequence i. e. the \operatorname{MEX} of the sequence is 4.

In the second test case, the sequence is 4 ⊕ 0, 4 ⊕ 1, 4 ⊕ 2, 4 ⊕ 3, 4 ⊕ 4, 4 ⊕ 5, 4 ⊕ 6, or 4, 5, 6, 7, 0, 1, 2. The smallest non-negative integer which isn't present in the sequence i. e. the \operatorname{MEX} of the sequence is 3.

In the third test case, the sequence is 3 ⊕ 0, 3 ⊕ 1, 3 ⊕ 2, or 3, 2, 1. The smallest non-negative integer which isn't present in the sequence i. e. the \operatorname{MEX} of the sequence is 0.
import sys
import io, os
import math
from heapq import *
gcd = math.gcd
sqrt = math.sqrt
ceil = math.ceil
# arr=list(map(int, input().split()))
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline
def strinp(testcases):
    k = 5
    if (testcases == -1 or testcases == 1):
        k = 1
    f = str(input())
    f = f[2:len(f) - k]
    return f
def print(x, end='\n'):
    sys.stdout.write(str(x) + end)
def ind(ch):
    return ord(ch)-ord("a")
def db(n):
    k=list(bin(n).replace("0b", ""))
    f=len(k)
    rem=31-f
    k=(["0"]*rem)+k
    return k
def bd(arr):
    p=1
    s=0
    for i in range(len(arr)-1,-1,-1):
        s+=(p*int(arr[i]))
        p*=2
    return s
def main():
    t=int(input())
    for _ in range(t):
        arr=list(map(int, input().split()))
        n=arr[0]
        m=arr[1]
        if(n>m):
            print(0)
            continue
        bm=db(m)
        bn=db(n)
        ans=["0"]*31
        f=30
        for i in range(31):
            if(bm[i]=="1"):
                f=i
                break
        g=-1
        xor=[0]*31
        trig=False
        for i in range(31):
            if(bm[i]=="1" and bn[i]=="0"):
                ans[i]="1"
            if(bm[i]=="0" and bn[i]=="0"):
                g=i
            xor[i]=int(bn[i])^int(ans[i])
            if(xor[i]>int(bm[i])):
                trig=True
                break
        if(trig):
            c = bd(ans)
            print(c)
            continue
        ans[g]="1"
        for i in range(g+1,31):
            ans[i]="0"
        print(bd(ans))
main()