当对一副牌反复进行固定的洗牌操作时,这副牌最终会回到其原始顺序。在此之前必须进行洗牌的次数被称为该洗牌方式下这副牌的周期。在本题中,我们考虑相反的问题:不是从一种洗牌方式开始并寻找其周期,而是对于每个可能的周期,告诉你具有该周期的牌的数量。你的任务是构造出与这些信息一致的任意一种洗牌方式。
形式化地,存在一个隐藏的排列 $f = (f_1, f_2, \dots, f_N)$,其中 $N$ 是给定的正整数。排列是一个由 $1$ 到 $N$ 的数字组成的列表,其中每个数字恰好出现一次。设 $x = x_1 x_2 \dots x_N$ 为一个二进制字符串。我们称 $f(x)$(将 $f$ 作用于 $x$)为新的二进制字符串 $x_{f_1} x_{f_2} \dots x_{f_N}$,且 $x$ 的周期是使得下式成立的最小正整数 $p$:
$$\underbrace{f(f(\dots f(x)\dots))}_{p \text{ times}} = x$$
可以证明,对于任意排列 $f$ 和任意相同长度的二进制字符串 $x$,$x$ 的周期总是存在的。换句话说,如果对 $x$ 连续应用足够多次 $f$,最终一定会变回 $x$。
给你数字 $N$,以及对于每个可能的周期 $p$,给出具有周期 $p$ 的二进制字符串的数量(在所有 $2^N$ 个可能的二进制字符串中)。你的任务是找到与给定信息相对应的任意排列 $f$,或者得出不存在此类排列的结论。
输入格式
输入包含以下内容:
- 一行,包含整数 $N, K$($2 \le N \le 100$,$1 \le K \le 1000$),表示排列的长度和可能周期的数量。
- 一行,包含 $K$ 个整数 $p_1, p_2, \dots, p_K$($1 \le p_i \le 10^9$)。这些是长度为 $N$ 的二进制字符串在隐藏排列下可能具有的所有周期。数字 $p_i$ 互不相同,且按升序排序。
- 一行,包含 $K$ 个整数 $m_1, m_2, \dots, m_K$($1 \le m_i \le 2^{100}$)。这意味着有 $m_i$ 个二进制字符串的周期为 $p_i$。
注意,数字 $m_i$ 可能会非常大!
输出格式
如果不存在与给定信息相对应的排列 $f$,输出 impossible。
否则,输出一行,包含 $N$ 个整数 $f_1, f_2, \dots, f_N$,即你选择的排列。请注意,该排列应恰好包含 $1$ 到 $N$ 的每个整数一次。如果存在多个解,你可以输出其中任意一个。
样例
输入样例 1
7 6 1 2 3 4 6 12 4 4 12 24 12 72
输出样例 1
2 3 1 5 6 7 4
输入样例 2
91 4 1 7 13 91 2 126 8190 2475880078570760549798240131
输出样例 2
impossible
输入样例 3
2 1 1 4
输出样例 3
1 2
说明
在第二个样例中,输入几乎对应于排列 $(2, 3, 4, \dots, 91, 1)$。唯一的错误是输入中最后一个数字的最后一位应该是 0 而不是 1。
在第三个样例中,所有 4 个二进制字符串的周期均为 1,这意味着恒等排列 $(1, 2)$ 是一个有效的答案。