题面
如果对于从 1 到 n−1 的所有 i , ai 中所有(二进制表示的)1 都位于 ai+1 中(二进制表示的)1 的位置上,则称非负整数 a1,a2,…,an 序列为增长序列。(换言之, ai&ai+1=ai ,其中 & 表示 &运算 。如果 n=1 ,则该序列也被视为增长序列)。
例如,以下四个序列都是增长型序列:
- [2,3,15,175] - 二进制为 [102,112,11112,101011112] ;
- [5] - 二进制是 [1012] ;
- [1,3,7,15] - 二进制是 [12,112,1112,11112] ;
- [0,0,0] - 二进制中为 [02,02,02] 。
以下三个序列是非增长序列:
- [3,4,5] - 二进制为 [112,1002,1012] ;
- [5,4,3] - 二进制为 [1012,1002,0112] ;
- [1,2,4,8] - 二进制为 [00012,00102,01002,10002] 。
考虑两个非负整数序列 x1,x2,…,xn 和 y1,y2,…,yn 。如果序列 $x_1 \oplus y_1, x_2 \oplus y_2, \dots, x_n \oplus y_n$ 是不断增长的,我们就称这对序列为共同增长序列,其中 ⊕ 表示 bitwise XOR。
给你一个整数序列 x1,x2,…,xn 。求序列 xi 和 yi 是共同增长的序列 y1,y2,…,yn 的词典最小值。
如果存在 1≤k≤n ,使得 ai=bi 对于任何 1≤i<k 都小于序列 b1,b2,…,bn ,那么序列 a1,a2,…,an 在词法上小于序列 b1,b2,…,bn 。
输入
第一行包含一个整数 t ( 1≤t≤104 )。然后是 t 个测试用例。
每个测试用例的第一行都包含一个整数 n ( 1≤n≤2⋅105 ) - 序列 xi 的长度。
第二行包含 n 个整数 x1,x2,…,xn ( 0≤xi≤230)- 序列 xi 的元素。
保证所有测试用例的 n 总和不超过 2⋅105 。
输出
对于每个测试用例,打印 n 个整数 y1,y2,…,yn ( 0≤yi≤230 ) - 最小序列的词序,使其与给定序列 xi 共同增长。
样例
5
4
1 3 7 15
4
1 2 4 8
5
1 2 3 4 5
4
11 13 15 1
1
0
0 0 0 0
0 1 3 7
0 1 0 3 2
0 2 0 14
0