#ATabc126f. [ABC126F] XOR Matching

[ABC126F] XOR Matching

AT_abc126_f [ABC126F] XOR Matching

题目描述

请构造一个长度为 2M+12^{M+1} 的数列 a={a1,a2,,a2M+1}a = \{a_1, a_2, \ldots, a_{2^{M+1}}\},使其满足以下条件(如果存在的话,请构造出其中一种):

  • aa 包含 00 以上小于 2M2^M 的每个整数各恰好 22 次。
  • 对于任意满足 ai=aja_i = a_ji,j (i<j)i, j\ (i < j),都有 ai xor ai+1 xor  xor aj=Ka_i\ xor\ a_{i+1}\ xor\ \cdots\ xor\ a_j = K

其中,xorxor 表示异或运算。

异或(xorxor)的定义如下:

对于整数 c1,c2,,cnc_1, c_2, \ldots, c_nc1 xor c2 xor  xor cnc_1\ xor\ c_2\ xor\ \cdots\ xor\ c_n 的二进制表示中,第 2k2^k 位(k0k \geq 0)的数是:如果 c1,c2,,cnc_1, c_2, \ldots, c_n 中二进制表示的第 2k2^k 位为 11 的数的个数为奇数,则该位为 11,否则为 00

例如,3 xor 5=63\ xor\ 5 = 6(二进制表示为:011 xorxor 101 == 110)。

输入格式

输入为一行,包含两个整数 MMKK

输出格式

如果不存在满足条件的数列 aa,输出 -1

如果存在,输出 aa 的元素,空格分隔。

如果有多个满足条件的数列,输出任意一个均可。

样例 1

输入

1 0

输出

0 0 1 1

样例 2

输入

1 1

输出

-1

样例 3

输入

5 58

输出

-1

说明/提示

限制

  • 输入均为整数。
  • 0M170 \leq M \leq 17
  • 0K1090 \leq K \leq 10^9

样例解释 1

在本例中,存在多个满足条件的数列。例如 a={0,0,1,1}a = \{0, 0, 1, 1\},对于 ai=aja_i = a_j(i,j) (i<j)(i, j)\ (i < j),有 (1,2)(1, 2)(3,4)(3, 4)a1 xor a2=0,a3 xor a4=0a_1\ xor\ a_2 = 0, a_3\ xor\ a_4 = 0,因此该 aa 满足条件。

样例解释 2

不存在满足条件的数列。

样例解释 3

不存在满足条件的数列。

由 ChatGPT 4.1 翻译