小苯的最短路
题号:NC284229
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小苯有一个 n 个点的无向完全图,编号从 1n,其中 i 号点和 j 号点之间的边权为 i \oplus j

他想知道从 1 号点出发到达所有点的最短路,请你帮他算一算吧。(其中 \oplus 表示按位异或运算。)
(但为了避免输出数据量过大,你只需要输出到达所有点的最短路的异或和即可。)

输入描述:

本题含有多组测试数据。
第一行一个正整数 T\ (1 \leq T \leq 10^5),表示测试数据的组数。
接下来 T 行,每行一个正整数 n\ (1 \leq n \leq 2 \times 10^9) 表示完全图的点数。

输出描述:

对于每组测试数据,输出包含一行一个正整数 S,表示到所有点的最短路的异或和,即:令 d_i 表示从 1i 号点的最短路,则 S=d_1 \oplus d_2 \oplus d_3 \oplus \cdots \oplus d_n。。
示例1

输入

复制
3
1
2
4

输出

复制
0
3
4

说明

对于第二组测试数据,从 1 号点出发到 2 号点只能走 1\rightarrow2 这条边,因此 d_2=3,而又因为 d_1=0,因此输出的 S=d_1 \oplus d_2 = 0 \oplus 3 = 3