AT_icpc2013summer_warmingUp_h Shuffling Machine

题目描述

KM 最近买了一台新的洗牌机。根据他的设想,这台机器每次洗牌的结果都是一致的。也就是说,存在一个整数序列 $a_1, a_2, \ldots, a_N$,满足以下条件: - 洗牌后的第 1 张牌总是初始排列中的第 $a_1$ 张牌, - 洗牌后的第 2 张牌总是初始排列中的第 $a_2$ 张牌, - 以此类推。 为了验证这个设想,KM 将 $N$ 张牌按顺序排列为 $1, 2, \ldots, N$。然而,他不小心按了机器的开关 $K$ 次,导致最终牌的顺序变为 $b_1, b_2, \ldots, b_N$。 KM 认为你可以根据最终的顺序 $b_1, b_2, \ldots, b_N$ 推断出原始的排列顺序 $a_1, a_2, \ldots, a_N$。你能做到吗? 输入的第一行包含两个整数 $N$ 和 $K$,表示牌的数量和机器开关被按下的次数。第二行包含 $N$ 个不同的整数,代表最终的牌顺序 $b_1, b_2, \ldots, b_N$。 你的任务是: - 如果 KM 的设想不可能实现,输出 `Impossible`。 - 如果有多种可能的原始顺序,输出 `Ambiguous`。 - 如果能确定唯一的原始顺序,输出该顺序 $a_1, a_2, \ldots, a_N$。 ### 示例输入与输出 ``` 3 2 3 1 2 ``` 输出: ``` 2 3 1 ``` ``` 3 2 1 3 2 ``` 输出: ``` Impossible ``` ``` 4 2 2 1 4 3 ``` 输出: ``` Ambiguous ```

输入格式

- 第一行包含两个整数 $N$ 和 $K$,分别表示牌的数量和洗牌机开关按下的次数。 - 第二行包含 $N$ 个不同的整数,代表最终的牌顺序。

输出格式

- 如果无法实现设想,输出 `Impossible`。 - 如果有多种可能的原始顺序,输出 `Ambiguous`。 - 否则,输出唯一可能的原始顺序。

说明/提示

- $1 \leq N \leq 10^5$ - $1 \leq K \leq 10^{18}$ - $1 \leq b_i \leq N$ **本翻译由 AI 自动生成**