题目描述
Construct a sequence a = {a1, a2, ..., a2M+1} of length 2M+1 that satisfies the following conditions, if such a sequence exists.
- Each integer between 0 and 2M−1 (inclusive) occurs twice in a.
- For any i and j (i<j) such that ai=aj, the formula ai xor ai+1 xor ... xor aj=K holds.
What is xor (bitwise exclusive or)?
The xor of integers c1,c2,...,cn is defined as follows:
- When c1 xor c2 xor ... xor cn is written in base two, the digit in the 2k's place (k≥0) is 1 if the number of integers among c1,c2,...cm whose binary representations have 1 in the 2k's place is odd, and 0 if that count is even.
For example, 3 xor 5=6. (If we write it in base two: 011
xor 101
= 110
.)
如果存在长度为 2M+1 的序列 a = { a1, a2, ..., a2M+1 } ,请构建一个满足以下条件的序列。
- 介于 0 与 2M−1 之间的每个整数都在 2M−1 中出现两次。(之间的每个整数都在 a 中出现两次。}
- 对于任何 i 和 j (i<j) 这样的 ai=aj ,公式 ai xor ai+1 xor ... xor aj=K 成立。
什么是 xor(位排他或)?
整数 c1,c2,...,cn 的 xor 定义如下:
- 当以二进制写入 c1 xor c2 xor ... xor cn 时,如果二进制表示的 c1,c2,...cm 中 2k 位上有 1 的整数个数是奇数,则 2k 位上的数字( k≥0 )是 1 ;如果是偶数,则 0 位上的数字是 0 。
例如, 3 xor 5=6 。(如果用二进制来写:011
xor 101
= 110
)。
输入格式
输入内容按以下格式标准输入:
M K
输出格式
如果没有序列 a 满足条件,则打印 -1
。
如果存在这样的序列 a ,则打印一个这样的序列 a 的元素,中间空格。
如果有多个序列满足条件,则接受其中任何一个序列。
样例 #1
样例输入 #1
1 0
样例输出 #1
0 0 1 1
样例 #2
样例输入 #2
1 1
样例输出 #2
-1
样例 #3
样例输入 #3
5 58
样例输出 #3
-1
说明
数据规模与约定
- 所有输入值均为整数。
- 0≤M≤17
- 0≤K≤109
样例 1 解释
在这种情况下,有多个序列满足条件。
例如,当 a = { 0,0,1,1 } 时,有两对 (i, j) (i<j) 可以满足 ai=aj 的条件: (1,2) 和 (3,4) 。由于 a1 xor a2=0 和 a3 xor a4=0 ,所以这个序列 a 满足条件。
样例 2 解释
没有序列满足条件。
样例 3 解释
没有序列满足条件。