#JDC7H. 盒移位

盒移位

题目描述

在一个 n×nn \times n 的正方形箱子中,每个位置可能存在一个物块(用数字 191-9 表示其颜色)或者是空的(用 00 表示)。

我们可以对整个箱子进行顺时针旋转 9090 度的操作。旋转结束后,所有物块会因为重力作用而垂直向下坠落,直到它们落到箱子底部或被其他物块支撑住为止。

从给定的初始状态开始,不断重复 “旋转 -> 下落” 的过程,计算至少需要多少次这样的完整操作,箱子才能恢复到最初的状态。或者输出 NO 表示不可能。

输入格式

每个测试文件仅有一组测试数据。

第一行一个整数 nn (1n50)(1≤n≤50) 表示正方形箱子大小。

接下来 nn 行每行 nn 个数 ai,j(0ai,j9)a_{i,j} (0≤a_{i,j}≤9) 表示初始状态下第 ii 行第 jj 列的物块颜色( 00 表示空)。

在每个测试文件内,保证所有测试数据的物块数量从第一列到第 nn 列递减并已受到重力影响,且保证答案小于 1×1041×10^{4}

输出格式

如果可以回到原来的状态输出 YES 然后输出一个整数,表示旋转次数,否则输出 NO

3
0 0 0
1 0 0
2 3 0
YES
3
5
0 0 0 0 0
0 0 0 0 0
1 1 0 0 0
2 2 2 0 0
3 3 3 3 0
YES
16

样例解释

样例解释