这是一个交互式问题。在本题中,你需要对交互器程序的行为做出响应。
首先,你需要输出一个 $6 \times 6$ 的矩阵 $H$,其中填满了字符 'A' 和 'B'。
在每一次请求中,交互器会对矩阵 $H$ 执行以下两种操作之一,从而得到新的矩阵 $T$:
- 在矩阵 $H$ 的每一行中最多改变一个字符,并以任意方式重排其行。
- 在矩阵 $H$ 的每一列中最多改变一个字符,并以任意方式重排其列。
改变字符的操作是指将某个 'A' 替换为 'B',反之亦然。
在每一步中,你需要找出交互器执行了哪种类型的操作。此外,还需要确定矩阵 $T$ 的每一行或每一列(取决于操作类型)在原始矩阵 $H$ 中的位置。
注意,交互器所使用的确切顺序是必须的。例如,如果整个矩阵 $H$ 由字符 'A' 组成,且交互器没有改变任何字符但重排了某些行,那么输出原始顺序或除交互器所用顺序之外的任何其他顺序都将被视为错误。这就是为什么使用例如包含重复行或列的矩阵 $H$ 是没有意义的。
你需要编写一个程序来填充矩阵 $H$,并正确响应交互器程序的所有请求。
有可能通过执行第一种或第二种类型的操作得到相同的矩阵。在这种情况下,允许你依次输出这两种变体。如果至少有一个变体与交互器执行的操作一致,你的响应将被视为正确。
输入格式
在你的程序输出矩阵 $H$ 后,交互器将开始向你的程序提供请求。对于每个请求,它将对原始矩阵 $H$ 执行某种类型的操作以获得结果矩阵 $T$。操作类型(第一种或第二种)以及行或列的顺序可能由交互器根据矩阵 $H$ 和测试用例来选择。每个请求以一行 "Request" 开头。该行后面跟着六行,每行包含六个字符 —— 即矩阵 $T$。
在收到 "Accepted" 行后,你的程序应立即终止。
保证请求次数不超过 100 次,且在每次请求中,交互器都会提供一个正确的矩阵 $T$。
输出格式
首先,你的程序应输出六行,每行包含六个字符 —— 初始矩阵 $H$。每个字符应为 'A' 或 'B'。
对于交互器随后的每个请求,你的程序应输出两行或三行。
- 如果存在两种不同操作类型导致了相同的矩阵,你的程序应输出三行。第一行应仅包含整数 0,表示存在两种可能的动作类型。第二行应描述第一种类型的可能动作,并包含六个空格分隔的整数 —— 第 $i$ 个整数是矩阵 $T$ 的第 $i$ 行在原始矩阵 $H$ 中的索引。类似地,第三行应描述第二种类型的可能动作,并包含六个空格分隔的整数 —— 第 $i$ 个整数是矩阵 $T$ 的第 $i$ 列在原始矩阵 $H$ 中的索引。
- 如果只有一种可能的操作类型,你的程序应输出两行。第一行应仅包含整数 $t$ —— 交互器执行的操作类型。第二行应包含六个空格分隔的整数 —— 第 $i$ 个整数是矩阵 $T$ 的第 $i$ 行或列(取决于操作类型)在原始矩阵 $H$ 中的索引。
所有行从上到下依次编号为 1 到 6,所有列从左到右以相同方式编号。
样例
样例输入 1
Request AAABAA BBAAAB BBBBBB BABABB ABABAB AAABBA Request AABAAA BBBBBB AAABBB AABBAB BBAABA BABAAA Accepted
样例输出 1
AAAAAA BBBBBB AAABBB ABABAB BABABA BBAAAA 1 1 6 2 5 4 3 2 1 3 2 4 5 6