U641963 异或之终

题目背景

在将一生都奉献给寻找通往异或之终的道路上后,牛油果终于来到了这条他梦寐以求的道路的起点。

题目描述

经过初步观察,通往异或之终道路上有 $N$ 个特殊的障碍。 为了最终抵达异或之终,出发前牛油果需要准备一条长度同样为 $N$ 的数组,以此面对道路上的障碍。其中,第 $K$ 个障碍的通过条件是:能从事先准备的数组中选出恰好 $K$ 个互不相同的非负整数,使得这 $K$ 个数的异或和为 $K$。一旦启程,不能再更改数组中的数。 这个问题切切实实地难住了牛油果,因此他找到了你,希望你能给他一个能通过所有障碍的数组。由于牛油果是水果,力量有限,因此你给出的数组中的最大数必须小于 $2^{64}$。 由于牛油果无法在有限的时间内判断你的数组是否真的能通过所有 $N$ 个障碍,因此他会额外提出 $Q$ 个询问,每次给出一个正整数 $K$,问你该数组如何通过第 $K$ 个障碍。

输入格式

第一行包含两个正整数 $N, Q$,分别表示你需要构造的数列的长度,以及询问的次数。 接下来 $Q$ 行,每行一个正整数 $K$,表示牛油果给出的询问。 保证 $1 \le K,Q \le N \le 10^5$,且所有 $K$ 的和不超过 $10^5$。

输出格式

第一行输出 $N$ 个非负整数,表示你构造的数列。如果有多个数列满足要求,输出任意一个即可。 接下来 $Q$ 行,每行回答一个给定的询问:输出 $K$ 个下标,代表数列内对应的数异或和为 $K$。

说明/提示

$K = 1$ 时,选择下标为 $2$ 的数,即 $"1"$ 以满足条件(一个数的异或和是其本身)。 $K = 2$ 时,选择下标为 $1, 3$ 的数,有 $8 \oplus 10 = 2$,满足条件。 $K = 3$ 时,选择下标为 $1, 2, 3$ 的数,有 $8 \oplus 1 \oplus 10 = 3$,满足条件。 $K = 4$ 时,选择下标为 $1, 2, 3, 4$ 的数,有 $8 \oplus 1 \oplus 10 \oplus 7 = 4$,满足条件。 请注意,你的目标不应该是通过所有牛油果的询问,而是构造出一个能够通过所有障碍的数组。如果牛油果事后发现他无法通过某个障碍,他会回来并给予你一个大大的 $Wrong\enspace Answer$。 可以证明对于任意正整数 $N$,都存在数列满足题目条件。