#P17050. [SGU243] Broken Chessboard

[SGU243] Broken Chessboard

题目描述

一个边长为 NN 的正方形棋盘被打碎成了若干块。每一块都是四连通的:也就是说,从这一块中的任意一个格子出发,都可以只经过这一块的格子,按上下左右移动到达这一块中的任意其他格子。

这些碎片随后被散落在一个 20×2020\times20 的桌面上。每块碎片可能被旋转 9090^\circ180180^\circ270270^\circ,但不会被翻转

桌面上:

  • . 表示空位置;
  • ii 块碎片的所有格子用第 ii 个大写英文字母表示,即依次为 ABC……

现在请使用所有碎片,重新拼成一个 N×NN\times N 的正方形。

不需要恢复原棋盘的黑白格颜色。

保证至少存在一种合法拼法。

输入格式

第一行包含一个整数 NN

1N51\le N\le5

接下来 2020 行,每行包含 2020 个字符,描述桌面上散落的碎片。

输出格式

输出 NN 行,每行 NN 个大写英文字母,表示拼好的棋盘。

对于每个字母,对应格子的形状必须与输入中该碎片的形状相同,允许整体旋转 00^\circ9090^\circ180180^\circ270270^\circ,但不允许镜像翻转。

所有输入碎片都必须恰好使用一次。

如果存在多种答案,输出任意一种即可。

样例 1

样例输入

3
....................
....................
....................
....................
........A...........
....................
...............C....
....................
..........B.........
....................
....................
....................
....................
............D.......
...........DDD......
............D.......
....................
....................
.................E..
....................

样例输出

ADB
DDD
CDE