BenzenE
题号:NC313020
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}小苯拿到了两个长度为 n 的数组 a_1, a_2, \dots, a_nb_1, b_2, \dots, b_n
\hspace{15pt}小红想让小苯基于这两个数组生成一个新数组 c_1, c_2, \dots, c_n,需要满足:
\hspace{23pt}\bullet\,对于 1\leqq i \leqq nc_i=a_i 或者 c_i=b_i
\hspace{23pt}\bullet\,c_1 \oplus c_2 \oplus \cdots \oplus c_n = 0
\hspace{15pt}你能帮帮小苯吗?

【名词解释】
\hspace{15pt}\oplus:指位运算中的按位异或(Bitwise XOR),对两个整数的二进制表示按位进行异或运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 100\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行输入一个整数 n\left(1 \leqq n \leqq 10^5\right),表示数组长度。
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n\left(0 \leqq a_i \lt 2^{30}\right)
\hspace{15pt}第三行输入 n 个整数 b_1, b_2, \dots, b_n\left(0 \leqq b_i \lt 2^{30}\right)

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。如果不存在满足条件的数组,直接输出 -1;否则,直接输出 n 个整数,表示你所构造的数组。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2
3
1 3 6
5 8 2
2
1 2
3 4

输出

复制
1 3 2
-1

说明

\hspace{15pt}对于第一组测试数据:
\hspace{23pt}\bullet\,选择 c_1=a_1=1c_2=a_2=3c_3=b_3=2
\hspace{23pt}\bullet\,异或和为 1 \oplus 3 \oplus 2 = 0
\hspace{15pt}满足条件。当然,其他满足条件的解(如 5, 3, 6)也会被接受。

\hspace{15pt}对于第二组测试数据,可能的异或和共有四种情况:
\hspace{23pt}\bullet\, 1 \oplus 2 = 3
\hspace{23pt}\bullet\, 1 \oplus 4 = 5
\hspace{23pt}\bullet\, 3 \oplus 2 = 1
\hspace{23pt}\bullet\, 3 \oplus 4 = 7
\hspace{15pt}没有任何一种组合的结果为 0,故输出 -1