SP4568 ANARC07C - Rotating Rings

题目描述

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

输入格式

你的程序将被测试在一个或多个测试用例上。每个测试用例的第一行是一个整数 $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 ```