include
include
include
include
include
include
include
using namespace std;
define sf scanf
define pf printf
define pb push_back
int in[1000][1000];
int num;
int dir[4];
bool check(int x, int y,int curr)
{
bool ans=1;
int cnt=0;
dir[0]=curr-1;
dir[1]=curr-num;
dir[2]=curr+1;
dir[3]=curr+num;
for(int i=0;i<4;i++)
{
if(dir[i]==x|| dir[i]==y) cnt++;
}
//cout<<cnt<<" "<<curr<<" "<<x<<" "<<y<<endl;
if(cnt!=2)ans=0;
return ans;
}
int main() {
int i,j,k=0;
bool ans;
while(sf("%d",&num)&&num)
{
ans=true;
k++;
for(i=0;i<num;i++)
for(j=0;j<num;j++) sf("%d",&in[i][j]);
if(num%2 && ((num*num)/2)+1!=in[num/2][num/2]) ans=0;
for(i=0;i<num/2&&ans;i++)
{
if(ans)ans=check(in[i][i+1],in[i+1][i],in[i][i]);
if(ans)ans=check(in[num-i-2][i],in[num-i-1][i+1],in[num-i-1][i]);
if(ans)ans=check(in[i+1][num-i-1],in[i][num-i-2],in[i][num-i-1]);
if(ans)ans=check(in[num-i-1][num-i-2],in[num-i-2][num-i-1],in[num-i-1][num-i-1]);
for(j=i+1;j<num-i-1&&ans;j++)
{
if(ans)ans=check(in[i][j-1],in[i][j+1],in[i][j]);
if(ans)ans=check(in[num-i-1][j-1],in[num-i-1][j+1],in[num-i-1][j]);
if(ans)ans=check(in[j+1][i],in[j-1][i],in[j][i]);
if(ans)ans=check(in[j-1][num-i-1],in[j+1][num-i-1],in[j][num-i-1]);
}
}
if(ans) pf("%d. YES\n",k);
else pf("%d. NO\n",k);
}
}