C. Interesting Sequencetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPetya and his friend, robot Petya++, like to solve exciting math problems.One day Petya++ came up with the numbers n and x and wrote the following equality on the board: n\ \&\ (n+1)\ \&\ \dots\ \&\ m = x, where \& denotes the bitwise AND operation. Then he suggested his friend Petya find such a minimal m (m \ge n) that the equality on the board holds.Unfortunately, Petya couldn't solve this problem in his head and decided to ask for computer help. He quickly wrote a program and found the answer.Can you solve this difficult problem?  InputEach test contains multiple test cases. The first line contains the number of test cases t (1 \le t \le 2000). The description of the test cases follows.The only line of each test case contains two integers n, x (0\le n, x \le 10^{18}).OutputFor every test case, output the smallest possible value of m such that equality holds.If the equality does not hold for any m, print -1 instead.We can show that if the required m exists, it does not exceed 5 \cdot 10^{18}.ExampleInput
510 810 1010 4220 161000000000000000000 0Output
12
10
-1
24
1152921504606846976
NoteIn the first example, 10\ \&\ 11 = 10, but 10\ \&\ 11\ \&\ 12 = 8, so the answer is 12.In the second example, 10 = 10, so the answer is 10.In the third example, we can see that the required m does not exist, so we have to print -1.
510 810 1010 4220 161000000000000000000 0
12 10 -1 24 1152921504606846976 
['bitmasks', 'math', '*1600']