//#include<stdio.h>
//int m,n,k,arr[102][102]={},a,b,c,d,x,y,l=123,s=0,sum=0,varr[102]={},z=0,r,t;
//
//int f(int i1,int j1)
//{
// int i, j;
// if(arr[j1][i1]!=1||arr[j1][i1]==0||arr[j1][i1]==NULL)
// {
// return 0;
// }
// arr[j1][i1]=2;
// return f(i1+1,j1)+f(i1-1,j1)+f(i1,j1+1)+f(i1,j1-1)+1;
//}
//
//int main()
//{
// int i, j;
// scanf("%d %d %d",&m,&n,&k);
// for(i=m;i>0;i--)
// {
// for(j=1;j<=n;j++)
// {
// arr[j][i]=1;
// }
// }
// for(i=0;i<k;i++)
// {
// scanf("%d %d %d %d",&a,&b,&c,&d);
// for(y=b+1;y<d+1;y++)
// {
// for(x=a+1;x<c+1;x++)
// {
// arr[x][y]=3;
// }
// }
// }
// for(i=1;i<m+1;i++)
// {
// for(j=1;j<n+1;j++)
// {
// if(arr[j][i]==1)
// {
// s=f(i,j);
// sum++;
// varr[z++]=s;
// }
// }
// }
// printf("%d\n",sum);
// for(i=0;i<z;i++)
// {
// for(j=0;j<=z-i;j++)
// {
// if(varr[j]>varr[j+1])
// {
// r=varr[j];
// t=varr[j+1];
// varr[j]=t;
// varr[j+1]=r;
// }
// }
// }
// for(i=2;i<z+2;i++)
// {
// printf("%d ",varr[i]);
// }
//}
#include<stdio.h>
int a,c,arr[102][102]={},h=1,varr[102][102]={},s=0,level[100]={},t;
int f(int i1,int j1)
{
if(varr[i1][j1]<=h)
{
return 0;
}
varr[i1][j1]=0;
return f(i1+1,j1)+f(i1-1,j1)+f(i1,j1+1)+f(i1,j1-1)+1;
}
int main()
{
int i,j;
scanf("%d",&a);
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
scanf("%d",&arr[i][j]);
}
}
for(h=1;h<=100;h++)
{
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
varr[i][j]=arr[i][j];
}
}
for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
if(varr[i][j]>h)
{
c=f(i,j);
level[h]++;
}
}
}
if(level[0]<level[h])
{
level[0]=level[h];
}
}
printf("%d",level[0]);
}