#P1719. 生长序列

生长序列

Description

非负整数序列​​a_1​,​​​a_2​……​a_n被称为增长序列,如果对于所有i属于1​​n​,满足a_i使用2进制表示时对于所有的a_i必须满足​​a_i&a_{i+1}=a_i​​​&​表示按位与。如果​​n=1,这个序列也认为是增长的。

例如,以下四个序列正在增长的

1.​​[2​,​​​3​,​​​15​,​​175]​​​他的二进制是​​[10​,​​​11​,​​​1111​,​​​10101111]

​2.[5]​​​他的二进制是​​[101]

3.​​[1​,​​​3​,​​​7​,​​15]​​​他的二进制是​​**[1​,​​​11​,​​​111​,​​​1111]

4.[0​,​​​0​,​​0]​​​他的二进制是​​[0​,​​​0​,​​​0]

以下三个序列为非增长序列:

1.[3​,​​​4​,​​5]​​​他的二进制是​​[11​,​​​100​,​​​101]

2.[5​,​​​4​,​​3]​​​他的二进制是​​[101​,​​​100​,​​​11]

3.[1​,​​​2​,​​​4​,​​8]​​​他的二进制是​​[0001​,​​​0010​,​​​0100​,​​​1000]

考虑两个非负整数序列​​x_1​,​​​x_2​……​x_n​​y_1​,​​​y_2​……​​​y_n​。如果这两个序列序列共生,则序列x_1异或y_1……x_n异或y_n是增长序列,这里的异或是按位异或。现在给你非负整数序列​​x_1​,​​​x_2​……​x_n请你找到字典序最小的序列​​y_1​,​​​y_2​……​y_n​​使其序列共生。

Input Format

第一行包含一个整数​​t​(​​​1<=t<=10^4​)。之后跟着t个测试用例。

每个测试用例的第一行包含一个整数​​n​,它是序列x_i的长度。

每个测试用例的第二行包含n个整数,代表的是​​x_1,x_2​……​​​x_n​(​​​1<=x_i<=2^30​​)

所有测试点n的总和不超过​​2·10^5​。

Output Format

对于每一个测试用例输出n个整数。这是字典序最小的序列​​y​​_1,y_2……y_n​(​​​1<=y_i<=2^30​​,使得它与给定的序列y_i共同增长。

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​

Source

基础知识,思维