题目描述
构造一个长度为2M+1的序列a=a1,a2,…,a2M+1,使得如果存在这样的序列则满足以下条件。
-
在a中,每个介于0和2M−1之间(包括2M−1)的整数都出现了两次。
-
对于任意i和j(i<j),满足ai=aj时,公式ai xor ai+1 xor ... xor aj=K成立。
什么是异或(按位异或)?
整数c1,c2,...cn的异或定义如下:
当将c1 xor c2 xor ... cn写成二进制时,在2k的位上(k≥0)的数为1,如果c1,c2...cm中的二进制表示形式在2k的位上有奇数个数字,否则为0。
例如,3 xor 5=6。(如果写成二进制形式: 011 xor 101=110。)
输入
输入一行共两个整数M,K
输出
如果不存在满足条件的序列a,输出-1。
如果存在这样的序列a,以空格分隔打印一个这样的序列a的元素。
如果有多个满足条件的序列,任何一个都将被接受。
1 0
0 0 1 1
样例解释
对于这个例子,有多个满足条件的序列。例如,当a=0,0,1,1时,有两对(i,j)(i<j)满足a¡=aj:(1,2)和(3,4)。由于a1xora2=0和a3ora4=0,这个序列a满足条件。
1 1
-1
5 58
-1
提示
0≤M≤17
0≤K≤109