Google Coding Competitions 团队正在筹备一个新的主题公园。和所有优秀的主题公园一样,我们希望有身穿吉祥物服装的演员与游客互动。由于开业时间紧迫,我们决定使用 CODE JAM、KICK START 和 HASH CODE 中的字母作为吉祥物,总共 13 种不同的吉祥物(字母 ACDEHIJKMORST)。
公园唯一的景点是一个迷宫,其中包含编号从 $1$ 到 $N$ 的房间。每个房间都有一个左出口和一个右出口。每个出口都会将游客带到另一个房间。出口不能反向使用;例如,如果房间 $i$ 有一个通往房间 $j$ 的出口,除非房间 $j$ 也恰好有一个通往房间 $i$ 的出口,否则你不能从房间 $j$ 返回房间 $i$。
我们希望在每个房间放置一个吉祥物。每个字母可以在迷宫的零个、一个或多个房间中出现。为了增加多样性,我们希望放置吉祥物,使得游客可以连续访问的任意三个(不一定不同)房间拥有三个不同的吉祥物。
你能帮我们为每个房间选择一个吉祥物以满足此目标,或者告诉我们这无法实现吗?
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含 3 行。第一行包含一个整数 $N$,表示迷宫中的房间数量。第二行包含 $N$ 个整数 $L_1, L_2, \dots, L_N$,表示从房间 $i$ 出发的左出口通往房间 $L_i$。第三行包含 $N$ 个整数 $R_1, R_2, \dots, R_N$,表示从房间 $i$ 出发的右出口通往房间 $R_i$。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),如果无法在遵守上述规则的情况下分配吉祥物,则 $y$ 为 IMPOSSIBLE。否则,$y$ 是一个长度为 $N$ 的字符串。$y$ 的第 $i$ 个字符应该是集合 ACDEHIJKMORST 中的一个大写字母,表示你希望分配给第 $i$ 个房间的吉祥物。
数据范围
$1 \le T \le 100$。 $L_i \neq i$,$R_i \neq i$,对于所有 $i$。 $1 \le L_i < R_i \le N$,对于所有 $i$。
样例
样例输入 1
4 3 2 1 1 3 3 2 6 3 1 4 1 2 3 5 3 5 2 4 5 20 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20 2 19 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 19 3
样例输出 1
Case #1: IMPOSSIBLE Case #2: TSHIRT Case #3: HCJKSHCJKSHCJKSHCJKS Case #4: CODEJAMROCKSTHEMOST
说明
样例 1 是题目描述中的图像。游客可以连续访问房间 1、2 和 1(这会访问房间 1 两次),因此该情况是不可能的。
样例 2 具有以下布局(蓝色箭头代表左出口,红色箭头代表右出口):
其中一种有效的答案是按所示分配吉祥物。请注意,虽然在这种情况下我们不需要分配两个 T 吉祥物,但我们这样做的方式并没有破坏规则。
样例 3 和 4 是可能的,但需要使用某些吉祥物的多个副本。