补天裂
题号:NC247341
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定长度为n的非负整数序列,你每次可以进行如下操作:
选择一对,将赋值为,赋值为(两个操作同时进行)。

即可以理解成,令,然后执行执行

其中代表二进制按位与,代表二进制按位或。

你可以进行任意次上述操作,你希望最终的序列字典序尽量小,输出这个字典序最小的序列。

输入描述:

第一行数据组数T,对于每组数据:
第一行一个正整数n,接下来一行n个整数,分别为

输出描述:

对于每组数据,输出一行n个整数,代表可以得到的字典序最小的序列。
示例1

输入

复制
2
3
2 4 6
2
1 0

输出

复制
0 6 6
0 1

说明

对于第一组样例,选择(i,j)(1,2)即可,执行完操作后a_{1}=0 , a_{2}=6
示例2

输入

复制
1
6
0 0 1 1 2 2

输出

复制
0 0 0 0 3 3