你在仓库里发现了一个古老的盒子,并决定打开它。就在你打开盒子的那一刻,你被困入了一个与恶魔对弈的诅咒游戏。游戏共包含 333 轮,你必须赢得所有轮次才能逃脱。恶魔给了你 999 枚硬币,你可以在所有轮次中使用它们。
注意,在本题中,网格的单元格 $(r, c)$ 指的是网格中第 $r$ 行第 $c$ 列的单元格。
在每一轮开始前,恶魔会准备一张秘密纸片,它可以表示为一个 3 行 3 列的网格,行和列均从 1 到 3 编号。恶魔会秘密地在其中一个或多个单元格上打孔,而你并不知道哪些单元格有孔。随后,该轮游戏开始,恶魔会给你一个奇数 $N$ ($3 \le N \le 33$)。
在每一轮中,你可以向恶魔提出若干次询问,每次询问消耗一枚硬币。对于每次询问,你可以向恶魔提供你的纸片,它可以表示为一个 $N$ 行 $N$ 列的网格,行和列均从 1 到 $N$ 编号。每个单元格由你涂成黑色或白色。
对于你的每一次询问,恶魔会计算出一个 $N - 2$ 行 $N - 2$ 列的二进制结果网格,行和列均从 1 到 $N - 2$ 编号。结果网格中单元格 $(r, c)$ 的值填充如下:
- 恶魔将秘密纸片叠放在你的纸片上,使得你纸片上的单元格 $(r + i - 1, c + j - 1)$ 与秘密纸片上的单元格 $(i, j)$ 对齐,其中 $1 \le i, j \le 3$。
- 只有当秘密纸片上对应的单元格有孔时,恶魔才能看到你纸片上对应单元格的颜色。
- 如果通过孔洞看到的黑色单元格数量为奇数,则结果网格中单元格 $(r, c)$ 的值为 1,否则为 0。
如果你得到的结果网格中所有值均为 1,则你赢得该轮游戏。否则,恶魔会将结果网格作为反馈给你,游戏继续进行。
如果你耗尽了所有硬币仍未赢得所有轮次,你将被永远困住。逃离这个诅咒游戏吧!
交互
每一轮开始时,会通过标准输入读入一个奇数 $N$ ($3 \le N \le 33$)。
随后,对于你向恶魔提出的每一次询问,你可以向标准输出输出 $N$ 行。每一行包含 $N$ 个字符。第 $r$ 行的第 $c$ 个字符表示你纸片上单元格 $(r, c)$ 的颜色。如果单元格 $(r, c)$ 涂成黑色,则字符应为 1;如果涂成白色,则为 0。
恶魔会通过标准输入回复一行字符串:
- 如果字符串为
CORRECT,则你赢得了当前轮次,下一轮(如果存在)将立即开始。 - 如果字符串为
INCORRECT,则恶魔会通过标准输入给出接下来的 $N - 2$ 行。每一行包含 $N - 2$ 个字符,表示题目描述中所述的二进制结果网格。
恶魔在每一轮开始前准备好秘密纸片。换句话说,评测程序不是自适应的。秘密纸片上至少会有一个孔。
所有 333 轮的总询问次数不得超过 999 次。如果你超过了最大询问次数,你应该以 0 退出程序以获得 Wrong Answer 判决。如果你不退出,判决结果将是不确定的,因为你的程序正在从已关闭的流中读取数据。
请记得在每次输出后刷新输出缓冲区。在 C 语言中,可以使用 fflush(stdout)。在 C++ 中,可以使用 cout << flush 或 cout << endl。在 Java 中,可以使用输出流的 flush() 方法,例如 System.out.flush()。在 Python 中,可以使用 sys.stdout.flush()。
样例
输入 1
3 INCORRECT 0 CORRECT 5 INCORRECT 111 001 111 CORRECT
输出 1
111 000 111 111 111 111 10011 10011 00000 11010 11011 11011 11011 00100 11011 11011
说明
对于第一轮,下图展示了恶魔如何为第一次和第二次询问计算结果网格中单元格 $(1, 1)$ 的值。灰色方块代表秘密纸片,圆圈代表孔洞。在第一次询问中,通过孔洞可以看到 4 个黑色单元格,因此结果网格中单元格 $(1, 1)$ 的值为 0。在第二次询问中,可以看到 5 个黑色单元格,因此结果网格中单元格 $(1, 1)$ 的值为 1。由于结果网格中仅包含 1,第一轮结束。
对于第二轮,下图展示了恶魔如何为第一次询问计算结果网格中单元格 $(2, 1)$ 的值。由于通过孔洞可以看到 2 个黑色单元格,因此单元格 $(2, 1)$ 的值为 0。