#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;
}