你需要组织一场“石头、剪刀、布”锦标赛。锦标赛采用单败淘汰制,共进行 $N$ 轮,共有 $2^N$ 名选手参赛。
起初,选手们按你指定的某种顺序从左到右排成一列。在每一轮中,队列中第 1 位和第 2 位选手(从左侧开始计数)进行比赛,第 3 位和第 4 位选手(如果存在)进行比赛,以此类推;所有这些比赛同时进行。比赛的胜者将留在队列中,保持原有的相对顺序,而败者离开队列回家。接着开始新的一轮。这一过程将持续到队列中只剩下一名选手为止;该选手即被宣布为冠军。
在每一场“石头、剪刀、布”比赛中,两名选手秘密地从“石头”(Rock)、“剪刀”(Scissors)或“布”(Paper)中选择一种,然后比较他们的选择。石头胜剪刀,剪刀胜布,布胜石头。如果一方的选择胜过另一方,则该选手获胜,比赛结束。然而,如果选手做出相同的选择,则为平局,他们必须重新选择并继续比赛,直到分出胜负。
你知道今年的选手们很固执,且缺乏策略。每个人都有一个偏好的出招,无论对手如何,他们在每一场比赛中都只会出该招。因此,如果两名出招相同的选手对决,他们将不断平局,比赛将永远进行下去!如果发生这种情况,锦标赛将永远无法结束,你也会沦为笑柄。
今年,有 $R$ 名选手偏好石头, $P$ 名选手偏好布, $S$ 名选手偏好剪刀。已知这些信息,你希望创建一个队列,保证锦标赛能够顺利完成并产生唯一的冠军——也就是说,比赛中永远不会出现平局。你的老板要求你列出所有满足条件的队列(按从左到右的顺序书写,用 $R$、$P$ 和 $S$ 分别代表偏好石头、布和剪刀的选手),并将该列表按字母顺序排列。
你知道老板会懒惰地选择列表中的第一个队列;那会是什么?或者你必须告诉老板,要防止平局是不可能的(IMPOSSIBLE)?
输入格式
输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 行,每行代表一个测试用例。每个测试用例包含四个整数: $N$、$R$、$P$ 和 $S$,如上所述。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 要么是 IMPOSSIBLE,要么是一个长度为 $2^N$ 的字符串,代表解决该问题的字母顺序最早的初始队列。队列中的每个字符必须是 $R$、$P$ 或 $S$,且必须包含 $R$ 个 $R$,$P$ 个 $P$ 和 $S$ 个 $S$。
数据范围
$R + P + S = 2^N$ $0 \le R \le 2^N$ $0 \le P \le 2^N$ $0 \le S \le 2^N$
小型数据集(测试集 1 - 可见) $1 \le T \le 25$ $1 \le N \le 3$
大型数据集(测试集 2 - 隐藏) $1 \le T \le 75$ $1 \le N \le 12$
样例
样例输入 1
4 1 1 1 0 1 2 0 0 2 1 1 2 2 2 0 2
样例输出 1
Case #1: PR Case #2: IMPOSSIBLE Case #3: PSRS Case #4: IMPOSSIBLE
说明
在样例 1 中,只有两名选手,锦标赛将进行一轮。两人排队的顺序无关紧要;出布的选手将击败出石头的选手。你将给老板提供按字母顺序排列的列表 PR、RP,其中第一个元素是 PR。
在样例 2 中,仅有的两名选手都出石头,因此平局不可避免。
在样例 3 中,有四名选手,锦标赛将进行两轮。在第一轮中,第一位选手(布)将输给第二位选手(剪刀),第三位选手(石头)将击败第四位选手(剪刀)。第二轮的队列将是 PR,第一位剩余选手(布)将击败另一位剩余选手(石头),因此锦标赛将以产生冠军且无平局结束。
以下是样例 3 的锦标赛示意图:
其他队列如 PSSR 也会出现在你给老板的列表中,但 PSRS 在字母顺序上是最早的。
在样例 4 中,要使第一轮没有平局,唯一的组织方式是安排两场比赛,每场比赛各有一名出石头的选手和一名出剪刀的选手。但这两场比赛的胜者都会是石头选手,当这两名胜者在下一轮相遇时,就会出现平局。