两家公司,Apricot Rules LLC 和 Banana Rocks Inc.,共用同一个数据中心。数据中心是一个 $R$ 行 $C$ 列的矩阵,每个单元格包含一个服务器塔。每个塔内的知识产权归属于两家公司中的某一家。
起初,他们在分配给不同公司的单元格之间的边界上建造了墙。这使得属于同一公司的正交相邻单元格能够保持连接。此外,如果单元格 $x$ 连接到一个单元格,而该单元格直接或间接地连接到 $y$,则称 $x$ 和 $y$ 是连通的。根据这个定义,属于同一公司的两个单元格可能无法连通,这是不可接受的。
两家公司同意在单元格的顶点处建造狭窄的走廊,允许两个对角相邻的单元格直接连接。令 $(i, j)$ 表示第 $i$ 行第 $j$ 列的单元格。在任意给定的顶点处最多只能建造一条狭窄走廊,这意味着要么 $(i, j)$ 和 $(i + 1, j + 1)$ 可以连接,要么 $(i + 1, j)$ 和 $(i, j + 1)$ 可以连接,或者两者都不连接,但不能同时连接。当然,只能在分配给同一公司的单元格之间建造走廊。
给定一个矩阵,其中每个单元格根据其所属公司被标记为 A 或 B,请找到一种添加对角连接的方法,使得所有的 A 单元格连通,且所有的 B 单元格连通。
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含两个整数 $R$ 和 $C$,表示代表数据中心的矩阵的行数和列数。接下来有 $R$ 行,每行包含 $C$ 个字符。这些行中第 $i$ 行的第 $j$ 个字符 $M_{i,j}$ 为 A 或 B,表示 $(i, j)$ 处的单元格所属的公司。
输出格式
对于每个测试用例,首先输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),如果无法通过分配对角连接使得 A 单元格连通且 B 单元格连通,则 $y$ 为 IMPOSSIBLE,否则为 POSSIBLE。如果输出 POSSIBLE,则接着输出 $R - 1$ 行,每行包含 $C - 1$ 个字符。这些字符必须对应于上述描述的有效排列。这些行中第 $i$ 行的第 $j$ 个字符必须是 \(如果 $(i, j)$ 和 $(i + 1, j + 1)$ 要连接)、/(如果 $(i + 1, j)$ 和 $(i, j + 1)$ 要连接)或 .(如果两对都不连接)。
数据范围
$1 \le T \le 100$。 $2 \le C \le 100$。 $2 \le R \le 100$。 $M_{i,j}$ 为大写字母 A 或 B。 至少存在一对 $i, j$ 使得 $M_{i,j}$ 为 A。 至少存在一对 $i, j$ 使得 $M_{i,j}$ 为 B。
样例
输入 1
3 2 2 AB BA 2 3 AAB ABB 3 4 BBAA BABA BBAA
输出 1
Case #1: IMPOSSIBLE Case #2: POSSIBLE .. Case #3: POSSIBLE //\ .//
说明
在样例 1 中,A 单元格对和 B 单元格对都需要连接,但由于两个连接必须穿过同一个顶点,因此最多只能存在一个连接。
在样例 2 中,单元格在输入中已经以所需方式连接,因此不需要额外的连接。注意,你可以添加不必要的有效连接,因此另一个有效的答案是 //,但 \. 是错误的。
在样例 3 中,也存在多种解,展示了其中一种。