Background
Special for beginners, ^_^
Description
给定一个正整数 n ,请你求出最小的正整数 m ,使得同时满足以下三个条件:
n&m=0
n∣m=0
n⊕m=0
式中:
& 表示两数与,是指两数在二进制形式下按位做与运算
∣ 表示两数或,是指两数在二进制形式下按位做或运算
⊕ 表示两数异或,是指两数在二进制形式下按位做异或运算,所谓异或,是指不同值异或结果为 1 ,相同值异或结果为 0 ,即:
0⊕0=0
0⊕1=1
1⊕0=1
1⊕1=0
本题每个测试点包含多组(≤105)测试例子。
每行一个测试例,一个正整数 n≤1019 。
Output
每行输出一个正整数 ,表示满足最小的正整数 m 。
Limitation
对于 15% 的数据, 满足 1≤n≤100 。
对于 30% 的数据, 满足 1≤n≤105 。
对于 50% 的数据, 满足 1≤n≤109 。
对于 100% 的数据, 满足 1≤n≤1019 。
Samples
2
3
说明:
m 取 1 时, 2&1=0 ,不满足
m 取 2 时, 2^2=0 , (^ 指异或运算 ) 不满足
m 取 3 时, 满足条件:
2&3=2
2∣3=3
2^3=1