Marika 正在开发一款名为“Minegraphed”的游戏,涉及在一个三维矩形世界中移动。
平行六面体游戏场中的每个单元格要么是空单元格,要么是障碍物单元格。你总是站在一个空单元格内,该单元格要么位于最底层,要么位于某个障碍物单元格的上方。每次移动可以在北、东、南、西四个方向中选择一个。你必须遵循以下规则进行移动:
- 如果你试图移出平行六面体,则无法进行此移动。
- 否则,如果前方单元格为空,你将向前移动一个单元格,然后向下坠落,直到到达最底层或障碍物单元格。
- 否则,如果你不在最顶层,且前方单元格为障碍物,且你上方的单元格以及该障碍物上方的单元格均为空,则你可以移动(向上攀爬)到该障碍物的顶部。
- 否则,你无法进行此移动。
Marika 准备了一个包含 $n$ 个顶点的有向图。现在她想要布置场地,并用 $1$ 到 $n$ 的数字标记 $n$ 个不同的可能站立位置,使得从标记为 $i$ 的单元格出发,通过合法的移动能够到达标记为 $j$ 的单元格,当且仅当在 Marika 的图中存在从顶点 $i$ 到顶点 $j$ 的路径。请帮助 Marika 设计一个满足此属性的场地。
输入格式
第一行包含一个整数 $n$ ($1 \le n \le 9$),表示顶点的数量。接下来的 $n$ 行,每行包含 $n$ 个 $0$ 或 $1$ 的整数。第 $i$ 行的第 $j$ 个数字为 $1$ 表示存在从顶点 $i$ 到顶点 $j$ 的边,否则为 $0$。第 $i$ 行的第 $i$ 个数字始终为 $0$。
输出格式
输出一个逐层描述的场地,其可达性与给定的图相同。
第一行应包含三个正整数 $x, y, z$,分别表示所设计平行六面体的西-东、北-南和顶-底尺寸。随后是描述 $z$ 个层的块,从最顶层到最底层,层与层之间用空行分隔。每个块应包含 $y$ 行,每行长度为 $x$,由点(‘.’)、井号(‘#’)和 $1$ 到 $n$ 的数字组成。井号表示障碍物单元格。点表示未标记的空单元格。数字表示标记的空单元格。每个 $1$ 到 $n$ 的数字应恰好出现一次。每个数字必须位于最底层或障碍物单元格的上方。障碍物可以“悬浮在空中”(它们不受重力影响)。
场地的体积 $x \times y \times z$ 不应超过 $10^6$。保证对于输入中的任何可能的图,都存在一个符合此限制的正确场地。
样例
输入格式 1
4 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0
输出格式 1
4 2 3 ..#. .4.. #### 1#.# ..3. #2..
说明
注意,你可以从单元格 1 向上攀爬到单元格 4,但由于“天花板”障碍物的存在,你无法从单元格 2 向上攀爬到单元格 1。