#P7949. [✗✓OI R1] 左方之地

[✗✓OI R1] 左方之地

Description

给你一个自然数 nn 和一个自然数参数 kk,你需要构造一个长度为 2n2^n 的序列 aa,满足 [0,2n)[0,2^n) 间的所有整数恰好出现一次,并且 i[2,2n]\forall i\in[2,2^n]popcount(aiai1)=k\operatorname{popcount}(a_i \oplus a_{i-1})=k
其中 popcount(x)\operatorname{popcount}(x) 表示 xx 在二进制下 11 的个数,\oplus 表示按位异或运算。

若有解则输出 1 并输出这个序列,否则输出 0

Input Format

一行两个整数 n,kn,k,意义同题目描述。

Output Format

第一行输出一个整数 0 或者 1,其中 0 代表不存在这样的序列,而 1 代表存在这样的序列。
如果第一行输出的是 1,接下来一行输出 2n2^n 个整数,表示你构造的序列。如果有多个合法的序列,输出任意一个。

4 3
1
0 14 3 13 6 8 5 11 12 2 15 1 10 4 9 7
4 2
0

Hint

本题采用 Special Judge,子任务评测

对于 100%100\% 的数据,保证 1n,k201\le n, k \le 20

子任务编号 nn kk 子任务总分 依赖子任务
0 4\le 4 5
1 8\le 8 25 Subtask 0
2 =1=1 10
3 =n1=n-1 15
4 45 Subtask 0~3