#arc0212. [arc021_2]Your Numbers are XORed...
[arc021_2]Your Numbers are XORed...
问题文
小学 年级的妹妹刚刚学习了关于 排他逻辑和 的知识。
排他逻辑和是指,对于非负整数 和 ,当将它们的排他逻辑和记作 时,定义如下:
- 当将 的二进制表示中第 位的值记作 ,将 的二进制表示中第 位的值记作 ,将 的二进制表示中第 位的值记作 时,若 =,则 为 ;若 ≠,则 为 。
具体而言,若将 和 的排他逻辑和记作 ,则 的二进制表示为 , 的二进制表示为 ,因此 的二进制表示为 ,即 的值为 。
妹妹了解到排他逻辑和的奇妙之处后,高兴地将周围的非负整数随机替换为它们的排他逻辑和的值。
然而,兄长要提交的文件也被替换了!
由于兄长不在家,妹妹决定在他回来之前恢复原始序列。以下是知道的线索:
- 文件上写着 个非负整数 ,,…,。这些数字不再在文件上。妹妹的目标是知道这些数字。
- 文件上写着 个非负整数 ,,…,。这些数字可以从文件中得到。
,,…, 是由以下定义得到的数字:
- 对于满足 的整数 , 的值等于 和 的排他逻辑和。
- 的值等于 和 的排他逻辑和。
非常遗憾,有时可能找不到对应的原始数列,或者有多个可能的解。我们该怎么办!
困扰的妹妹想起了今天占卜的幸运物品是字典。字典、辞书、字典顺序...
最终,她决定添加以下规则:
- 如果找不到对应的原始数列,则无法办法,输出
-1
。 - 如果存在多个对应的原始数列,则输出字典顺序最小的数列。
现在,请你代替妹妹编写程序,输出满足上述条件的数列。
输入
输入从标准输入中提供,具有以下格式。
:
- 第 行为表示文件中数字个数的整数 。
- 第 行到第 行给出了文件中保留的非负整数。其中第 行给出整数 。
输出
如果存在满足条件的原始非负整数序列 ,,…,,则输出其中字典顺序最小的序列,一共 行。其中第 行输出整数 。若不存在满足条件的数列,则输出 -1
。输出末尾需包含换行。
输入示例1
2
1
1
输出示例1
0
1
可见 和 的排他逻辑和为 。满足这样条件的数列有多种,但是满足 , 的数列是字典顺序最小的。
输入示例2
3
1
4
1
输出示例2
-1
不存在满足条件的原始数列。一定是在某个地方操作出错了。
输入示例3
3
1
2
3
输出示例3
0
1
3