你的游戏公司刚刚订购了大量带有 64 个空白单元格的正方形游戏板,原本打算将其制作成棋盘,但你的老板突然宣布国际象棋已经过时了。为了充分利用这些棋盘,你设计了一种使用“板块”(tiles)的新谜题。
板块是一组连通的单元格,通过边与边相连,且可以放入 $3 \times 3$ 的单元格正方形内。例如,以下是有效板块的示例(每个 @ 表示板块的一部分,额外的 . 字符用于填充):
... @@@ @@@ .@@ ... @@@ @.@ @.@ .@. @@@ @.. @@@
以下板块则不是有效的:
@@. @.@ .@@. ... .@. @@@@ .@@ @.@ .@@.
当你的新谜题的解题者在棋盘上放置一个板块时,其单元格必须精确覆盖棋盘上尚未被其他板块覆盖的单元格。即使经过任意平移、旋转(90 度的倍数)和/或翻转,板块仍被视为同一种类型,解题者在放置时可以对板块进行上述任何操作。例如,以下所有形状都被视为同一种板块(该板块还存在其他变体):
.@. ..@ @.. ... @@. @@. .@@ @@. .@@ .@@ @.. .@. .@. @@. ...
为了制作谜题,你需要将棋盘上的一个或多个单元格涂成红色。解题者通过在棋盘上放置板块来解决谜题,使得所有红色单元格都被覆盖,且没有其他单元格被覆盖。为了节省制造成本,解题者只收到一种类型的板块,但他们会得到足够数量的该板块副本,以覆盖所有的红色单元格。
你的任务是决定将棋盘上的哪些单元格涂成红色。不幸的是,你的老板还在决定游戏最终使用哪两种特定板块中的哪一种。你不想再等下去了,所以你决定尝试涂色一组单元格,使得无论最终使用哪种板块,谜题都能被解开。
输入格式
输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例,每个用例包含四行。前三行每行包含三个字符,接着是一个空格,再接着三个字符。第四行是一个空行。
观察整个用例时,空格字符将左侧的 $3 \times 3$ 网格和右侧的 $3 \times 3$ 网格分隔开。每个网格代表一个框架,其中显示了两种板块中的一种。在每个网格中,每个字符要么是 @(表示该单元格是板块的一部分),要么是 .(表示该单元格不是板块的一部分)。注意,这些 . 单元格与谜题或棋盘无关,仅作为填充以使板块形状清晰。保证题目中给出的两个板块是不相同的。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),如果问题有解,则 $y$ 为 POSSIBLE,否则为 IMPOSSIBLE。如果存在解,则再输出八行,每行十七个字符,形成两个 $8 \times 8$ 的网格,中间用一列空格隔开。每个网格必须使用点号 . 表示空白单元格,或使用以下 64 个字符集中的字符来表示谜题解法中使用的各个板块:
!?0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
在每个 $8 \times 8$ 网格内,每个非点号字符必须表示同一个板块的一部分,不同的字符必须表示不同的板块。左侧网格中的每个板块必须与输入中左侧的板块相同(在旋转、平移和翻转意义下)。右侧网格中的每个板块必须与输入中右侧的板块相同(在旋转、平移和翻转意义下)。两个 $8 \times 8$ 网格中非点号单元格的集合必须相同,且不能为空。
如果存在多个有效解,你可以输出其中任意一个。
数据范围
$T = 595$。(包含所有可能的测试用例,同构意义下。) 时间限制:30 秒。 内存限制:1GB。 输入中每个板块的单元格通过边与边连接形成一个单一的连通组。 输入中的两个板块不相同。
样例
输入 1
4 .@@ .@. .@. .@. .@@ @@. @@@ @@@ @.@ @@@ @@@ @@@ .@. ... @@. .@@ @.. ... ... ..@ ... ..@ @.. ...
输出 1
Case #1: POSSIBLE ....11.. ....11.. ...221.. ...221.. ...211.. ...321.. ...22... ...32... .333.... .433.... 4343.... 5444.... 444..... 555..... ........ ........ Case #2: IMPOSSIBLE Case #3: POSSIBLE ........ ........ ..T..I.. ..T..I.. .TT..II. .tT..Ii. .T....I. .t....i. ........ ........ .LL..EE. .LL..EE. ..LLEE.. ..llee.. ........ ........ Case #4: POSSIBLE
说明
样例输出展示了针对样例用例的一组答案。其他答案也可能是可能的。
在样例 #2 中,不存在一组红色的单元格,使得无论选择哪种板块,谜题都能被解开。
在样例 #3 和 #4 中,注意所选的红色单元格集合不需要是连通的。还要注意,输入中用于表示板块的 . 字符不被视为板块的一部分,在创建谜题时没有意义。例如,对于以下输入,给出的答案也是可以接受的:
... ... .@. .@. ... .@.
此外,该输入与样例 #4 同构,不会与样例 #4 出现在同一个测试集中。