#801. 最大的和

最大的和

题目描述

给定 TT 组询问。每组询问给出一个非负整数 nn,要求在区间 [0,n][0,n] 内选取两个整数 a,ba,b,满足

ab=na\oplus b = n

\oplus 表示按位异或运算),使得 a+ba+b 尽可能大。请输出每组询问的最大可能值。

输入格式

输入包含多组测试数据:

  • 第一行包含整数 TT,表示询问组数。
  • 接下来 TT 行,每行包含一个整数 nn0n23110\le n\le 2^{31}-1),表示当前询问的参数。

输出格式

对于每组询问,输出一行,包含一个整数 —— 在约束下能取得的最大 a+ba+b 值。

样例输入

6
1
2
3
4
5
6

样例输出

1
2
3
4
5
8

说明

样例解释

样例中共有 66 组询问:

  • 对于 n=1,2,3,4,5n=1,2,3,4,5,可以取 a=0,b=na=0,b=n,得到 a+b=na+b=n
  • 对于 n=6n=6,可以取 a=3,b=5a=3,b=535=63\oplus5=6),此时 a+b=8a+b=8,可以证明这是最大的取值。

数据范围

对所有数据,满足

  • 1T1061\le T\le 10^6
  • 0n23110\le n\le 2^{31}-1
子任务 TT nn
11 10\le 10 241\le 2^4-1
232 \sim 3 200\le 200 281\le 2^8-1
474 \sim 7 105\le 10^5 2161\le 2^{16}-1
8138 \sim 13 200\le 200 2311\le 2^{31}-1
142014 \sim 20 106\le 10^6