#PX0031. 兔子的区间密码

兔子的区间密码

题目描述

对于给定的区间 llrr ,从中选择两个整数 xxyy ,使得他们异或后得到的值 xyx \oplus y 最大。输出这个最大值。

你需要处理多组询问。

其中,\oplus 表示按位异或运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节

输入格式

每个测试文件均包含多组测试数据。第一行输入一个整数 T(1T104)T\left(1\leq T\leq 10^4\right) 代表数据组数,每组测试数据描述如下:

在一行上输入两个整数 l,r(0lr1018)l, r \left(0\leq l\leq r\leq 10^{18}\right) 代表区间的左右端点。

输出格式

对于每一组测试数据,在一行上输出一个整数,代表能够得到的最大的 xyx\oplus y

输入样例

5
2 3
1 10
3 4
5 5
2 5

输出样例

1
15
7
0
7

说明/提示

在第一组测试数据中,一共有三种不同的选取方式:
\bulletx=2x=2y=2y=2xy=0x \oplus y = 0
\bulletx=2x=2y=3y=3xy=1x \oplus y = 1
\bulletx=3x=3y=3y=3xy=0x \oplus y = 0
综上,最大值为 11