SP4568 ANARC07C - Rotating Rings
题目描述
任何方形网格都可以看作一个或多个环,一个套在一个里面。例如,如图 (a) 所示,一个 5 x 5 的网格由三个环组成,编号为 1、2 和 3(从外到内)。一个大小为 $N$ 的方形网格被称为有序的,如果它包含从 1 到 $N^2$ 的值,并且按行优先顺序排列,如图 (b) 所示,其中 $N = 4$。我们希望确定给定的方形网格是否可以通过仅旋转其环来排序。例如,图 (c) 中的网格可以通过将第一个环逆时针旋转两个位置,并将第二个环顺时针旋转一个位置来排序。

输入格式
你的程序将被测试在一个或多个测试用例上。每个测试用例的第一行是一个整数 $N$,表示网格的大小。接下来有 $N$ 行,每行包含 $N$ 个整数值,按行优先顺序指定网格中的值。注意 $0 < N \leq 1000$。
测试用例以一个虚拟测试用例结束,该测试用例的 $N = 0$。
输出格式
对于每个测试用例,在单独的一行上输出结果,使用以下格式:
`k. 结果`
其中 $k$ 是测试用例编号(从 1 开始),结果是 "YES" 或 "NO"(不带双引号),并且在 "." 和 "结果" 之间有一个空格。
## 样例
```
输入
4
9 5 1 2
13 7 11 3
14 6 10 4
15 16 12 8
3
1 2 3
5 6 7
8 9 4
0
输出
1. YES
2. NO
```