这是一个“运行两次”的问题。
老 Pafnutiy 想要发送一个包含 $n$ 个顶点的带标号图 $G$ 给老 Infinitiy。对于顶点集 $[n] = \{1, 2, \dots, n\}$,如果两个带标号图存在两个不同的整数 $i, j \in [n]$,使得顶点 $i$ 和 $j$ 在其中一个图中相邻而在另一个图中不相邻,则称这两个带标号图不同。
不幸的是,老 Pafnutiy 的旧电脑只能存储无标号图。对于顶点集 $[m] = \{1, 2, \dots, m\}$,如果不存在置换 $\pi \in S_m$ 使得将其中一个图的顶点按照该置换重新编号后,两个图作为带标号图变得相等,则称这两个无标号图不同。因此,如果试图将一个带标号图输入到老 Pafnutiy 的旧电脑中,电脑会以某种方式打乱其所有顶点。
老 Pafnutiy 决定发送一个更大的图给老 Infinitiy:即如果 $G$ 有 $n$ 个顶点,老 Pafnutiy 将发送一个包含 $m = f(n) = n + \lceil \log_2 n \rceil + 3$ 个顶点的图 $H$。然后老 Infinitiy 只需要设法将接收到的图 $H$ 解码回 $G$,已知 $H$ 和 $H'$ 作为无标号图是相等的。他们该如何组织这次传输呢?
输入格式
第一行包含两个整数 $v_1$ 和 $v_2$:输入图和输出图的顶点数 ($3 \le \min\{v_1, v_2\} \le 2024$)。接下来的 $v_1$ 行包含长度为 $v_1$ 的二进制字符串:输入图的邻接矩阵。
该图是无向的,因此邻接矩阵是对称的。此外,保证图中没有自环。
输出格式
输出 $v_2$ 个长度为 $v_2$ 的二进制字符串:输出图的邻接矩阵。
如果 $v_1 < v_2$,则 $v_1 = n, v_2 = m = n + \lceil \log_2 n \rceil + 3$。在这种情况下,你应该扮演老 Pafnutiy:你接收图 $G$ 并应该输出图 $H$。
否则,$v_2 = n, v_1 = m = n + \lceil \log_2 n \rceil + 3$。在这种情况下,你应该扮演老 Infinitiy:你接收图 $H'$(它是通过对 $H$ 的顶点应用某种置换后得到的)并应该输出初始图 $G$。
该图应该是无向的,因此邻接矩阵应该是对称的。此外,图中不能有自环。
样例
样例输入 1
5 11 01110 10110 11001 11001 00110
样例输出 1
00010000000 00000000000 00000000000 10000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000
样例输入 2
11 5 01000000000 10000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000
样例输出 2
01110 10110 11001 11001 00110