//#include <iostream>
//
//using namespace std;
//
//int main()
//{
// int a,b,num=0,arr[100000];
// cin>>a>>b;
//
// for(int i=a; i<=b; i++)
// {
// while(i!=1)
// {
// if(i%2==1)
// {
// i=i*3+1;
// }
// else
// {
// i=i/2;
// }
// num++;
// }
// arr[i]=num;
// num=0;
// }
// for(int i=a; i<=b; i++)
// {
// cout<<num[i]<<endl;
// }
//}
//
//#include <vector>
//#include <iostream>
//#include <stdio.h>
//
//using namespace std;
//
//int main() {
// vector<int> numbers;
// vector<string> total;
//
// numbers.push_back(10);
// numbers.push_back(20);
// numbers.push_back(30);
//
//// for(;numbers.size();) {
//// cout << numbers.front() << endl;
//// numbers.pop_back();
//// }
//
// for(int i=0; i<numbers.size(); i++) {
// cout << numbers[i] << endl;
// }
//
//}
/*
#include <vector>
#include <iostream>
#include <stdio.h>
using namespace std;
vector<int> func(vector<int> data) {
return data;
}
int main() {
vector<int> numbers;
vector<int> result;
vector<string> total;
vector<vector<int> > data;
int n, k;
cin >> n;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
cin >> k;
numbers.push_back(k);
}
data.push_back(numbers);
numbers.clear();
}
numbers.push_back(10);
data.push_back(numbers);
numbers.clear();
numbers.push_back(40);
data.push_back(numbers);
numbers.push_back(50);
data.push_back(numbers);
result = func(numbers);
for(int i=0; i<result.size(); i++) {
cout << result[i] << endl;
}
for(int i=0; i<data.size(); i++) {
for(int j=0; j<data[i].size(); j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
*/
#include <iostream>
#include <vector>
using namespace std;
int N=0,n;
vector<vector<int> > v3;
void func1(vector<vector<int> > v3, int num, int x, int y)
{
if(x<=0 || y<=0 || x>=n || y>=n) return;
//cout << x << " " << y << endl;
if(v3[x-1][y] > num)
{
func1(v3, num, x-1, y);
v3[x-1][y]=0;
}
//cout << x << "[1]" << y << endl;
if(v3[x+1][y] > num)
{
func1(v3, num, x+1, y);
v3[x+1][y]=0;
}
//cout << x << "[2]" << y << endl;
if(v3[x][y-1] > num)
{
func1(v3, num, x, y-1);
v3[x][y-1]=0;
}
//cout << x << "[3]" << y << endl;
if(v3[x][y+1] > num)
{
func1(v3, num, x, y+1);
v3[x][y+1]=0;
}
//cout << x << "[4]" << y << endl;
}
int func2(vector<vector<int> > v3, int num)
{
int N;
for(int i=0; i<n; i++)
{
N=0;
for(int j=0; j<n; j++)
{
if(v3[i][j] > num)
{
cout <<num<<" " <<i<< " " <<j<<" "<<N<<endl;
func1(v3, num, i, j);
N++;
}
}
}
return N;
}
int main()
{
vector<int> v1;
vector<vector<int> > v2;
int num,result=0,max=-10,min=10,M=-10;
cin>>n;
for(int i=0; i<n; i++)
{
v1.clear();
for(int j=0; j<n; j++)
{
cin>>num;
v1.push_back(num);
}
v2.push_back(v1);
}
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(max<v2[i][j])
max=v2[i][j];
if(min>v2[i][j])
min=v2[i][j];
}
v2.push_back(v1);
}
for(int i=min; i<max; i++)
{
v2=v3;
result=func2(v2,i);
if(M<result)
M=result;
}
cout<<M;
}