#AT1342. F - XOR Matching

F - XOR Matching

F - XOR匹配

得分:600分

问题描述

构造一个长度为$2^{M + 1}$的序列$a$ = {$a_1,\ a_2,\ ...,\ a_{2^{M + 1}}$} ,使得如果存在这样的序列,则满足以下条件。

  • 在$a$中,每个介于$0$和$2^M - 1$之间(包括$2^M - 1$)的整数都出现了两次。
  • 对于任意$i$和$j$($i < j$),满足$a_i = a_j$时,公式$a_i \ xor \ a_{i + 1} \ xor \ ... \ xor \ a_j = K$成立。

什么是异或(按位异或)?

整数$c_1, c_2, ..., c_n$的异或定义如下:

  • 当将$c_1 \ xor \ c_2 \ xor \ ... \ xor \ c_n$写成二进制时,在$2^k$的位上($k \geq 0$)的数为$1$,如果$c_1, c_2, ...c_m$中的二进制表示形式在$2^k$的位上有奇数个数字,否则为$0$。

例如,$3 \ xor \ 5 = 6$。(如果写成二进制形式:011 $xor$ 101 $=$ 110。)

</details>

约束

  • 输入的所有值均为整数。
  • $0 \leq M \leq 17$
  • $0 \leq K \leq 10^9$

输入

输入以以下格式从标准输入中给出:

MM KK

输出

如果不存在满足条件的序列$a$,输出-1

如果存在这样的序列$a$,以空格分隔打印一个这样的序列$a$的元素。

如果有多个满足条件的序列,任何一个都将被接受。


1 0
0 0 1 1

对于这个例子,有多个满足条件的序列。

例如,当$a$ = {$0, 0, 1, 1$}时,有两对$(i,\ j)\ (i < j)$满足$a_i = a_j$:$(1, 2)$和$(3, 4)$。由于$a_1 \ xor \ a_2 = 0$和$a_3 \ xor \ a_4 = 0$,这个序列$a$满足条件。


1 1
-1

没有序列满足条件。


5 58
-1

没有序列满足条件。