经过无数个不眠之夜,你终于教会了机械臂做出“石头剪刀布”游戏所需的手势。现在,你只需要编写程序让它参加即将到来的机器人锦标赛!
在本次锦标赛中,每个机器人使用的程序都是一系列动作,每个动作必须是以下之一:R(代表“石头”)、P(代表“布”)或 S(代表“剪刀”)。布胜过石头且输给剪刀;石头胜过剪刀且输给布;剪刀胜过布且输给石头。
当两个机器人在比赛中对决时,第一个做出获胜动作的机器人获胜。比赛开始时,每个机器人执行其程序的第一个动作。如果两个动作不同,其中一个动作会胜过另一个,从而其中一个机器人赢得比赛。如果动作相同,每个机器人执行其程序的下一个动作,依此类推。
每当机器人执行完其程序并需要下一个动作时,它会回到程序开头。例如,程序为 RSSP 的机器人的第五个动作是 R。如果比赛持续超过一古戈尔($10^{100}$)个动作,裁判将掷硬币决定胜者。
一旦比赛结束,获胜的机器人会重置,因此它对该场比赛没有记忆。在下一场比赛中,它会从程序的第一步开始执行,依此类推。
锦标赛共进行 $K$ 轮,采用单败淘汰制。共有 $N = 2^K$ 个机器人,编号从 $0$ 到 $N - 1$。在第一轮中,机器人 $0$ 与机器人 $1$ 对决,机器人 $2$ 与机器人 $3$ 对决,依此类推,直到机器人 $N - 2$ 和 $N - 1$。这些比赛的负者被淘汰出局。在第二轮中,$0-1$ 比赛的胜者与 $2-3$ 比赛的胜者对决,依此类推。一旦进入第 $K$ 轮,只剩下一场比赛,它决定了锦标赛的总冠军。
所有其他参赛者都非常有信心,他们已经公开了各自机器人的程序。然而,机器人尚未分配编号,因此没有人预先知道他们的对手是谁。在了解所有其他程序的情况下,是否可能编写一个程序,保证无论机器人编号如何分配,都能赢得锦标赛?
输入格式
输入的第一行给出测试用例的数量 $T$;接下来是 $T$ 个测试用例。每个测试用例的第一行包含一个整数 $A$:锦标赛中对手(其他机器人)的数量。接下来有 $A$ 行;第 $i$ 行包含一个由大写字母组成的字符串 $C_i$,代表第 $i$ 个对手机器人的程序。
输出格式
对于每个测试用例,输出一行 Case #x: y。如果存在一个长度在 $1$ 到 $500$ 之间的字符串,能够保证按照上述规则赢得锦标赛,则 $y$ 应为代表该程序的字符串。否则,$y$ 应为大写字母 IMPOSSIBLE。
数据范围
$1 \le T \le 100$。
$A = 2^K - 1$,其中 $K \ge 1$ 为某个整数。
$C_i$ 中的每个字符均为 R、P 或 S。
测试集 1(可见) $1 \le A \le 7$。 $C_i$ 的长度在 $1$ 到 $5$ 之间。
测试集 2(隐藏) $1 \le A \le 255$。 $C_i$ 的长度在 $1$ 到 $500$ 之间。
样例
样例输入 1
3 1 RS 3 R P S 7 RS RS RS RS RS RS RS
样例输出 1
Case #1: RSRSRSP Case #2: IMPOSSIBLE Case #3: P
说明
注意:尽管在这些样例中所有对手的程序长度相同,但这并非必然。同一个测试用例中的对手可能拥有不同长度的程序。
在样例 1 中,只有一个对手,程序为 RS。我们的答案在一段时间内与对手的动作匹配,而对手会多次循环其程序。当它开始第四次循环时,我们用 P 击败了它。其他有效的解也存在,例如 P、RR 和 R。
在样例 2 中,有三个对手,程序分别为 R、P 和 S。请自行思考为什么该用例的结果是 IMPOSSIBLE!
在样例 3 中,所有七个对手都使用相同的程序。例如,使用程序 P 可以保证你获胜。请记住,每个机器人在与新对手进行每场比赛时,都会从其程序的开头开始。