B. 与运算重建
时间限制:1 秒
空间限制:256 MB
给定一个由 n−1 个整数组成的数组 b。
一个长度为 n 的数组 a 被称为“好的”,如果对于所有的 1≤i≤n−1,都有 bi=ai&ai+1,其中 & 表示按位与运算。
请你构造一个“好的”数组,或者报告不存在这样的数组。
输入格式
第一行包含一个整数 t(1≤t≤104)—— 测试数据的组数。
每组测试数据包含两行:
- 第一行包含一个整数 n(2≤n≤105)—— 数组 a 的长度。
- 第二行包含 n−1 个整数 b1,b2,…,bn−1(0≤bi<230)。
保证所有测试数据的 n 之和不超过 105。
输出格式
对于每组测试数据,如果不存在“好的”数组,输出一行 -1。
否则,输出 n 个用空格分隔的整数 a1,a2,…,an(0≤ai<230),表示一个满足条件的数组 a。
如果有多组解,输出任意一组即可。
样例输入
4
2
1
3
2 0
4
1 2 3
5
3 5 4 2
样例输出
5 3
3 2 1
-1
3 7 5 6 3
样例解释
- 第一组:b=[1],一个可行的 a 为 [5,3],因为 5&3=1。
- 第二组:b=[2,0],一个可行的 a 为 [3,2,1]。
- 第三组:b=[1,2,3],可以证明不存在这样的 a,输出
-1。
- 第四组:b=[3,5,4,2],一个可行的 a 为 [3,7,5,6,3]