#include <iostream>
using namespace std;
const int N=505;
int n;
int a[N][N];
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
int tmp=-1e9-1;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
int nx,ny;
bool flag1=false,flag2=false;
for(int k=0;k<4;k++)
{
nx=i+dx[k],ny=j+dy[k];
if(a[nx][ny] < a[i][j]) flag1=true;
else if(a[nx][ny] == a[i][j])
{
if(tmp==-1e9-1) tmp=a[i][j];
else if(tmp != a[i][j])
{
cout<<"NO";
return 0;
}
flag2=true;
}
else flag2=true;
if(flag1 && flag2 && tmp!=-1e9-1 && a[i][j] !=tmp)
{
cout<<"NO";
return 0;
}
else if(flag1 && flag2 && tmp == -1e9-1) tmp=a[i][j];
}
}
if(tmp != -1e9-1 && tmp != 0)
{
cout<<"NO";
return 0;
}
cout<<"YES";
return 0;
}