#include <bits/stdc++.h>
using namespace std;
long long n,m,t[105][105],s,u,z[105][105];
long long dfs(int x,int y){
if(z[x][y]!=0)return z[x][y];
if(t[x][y]==s)return z[x][y]=1;
if(t[x-1][y]>t[x][y])z[x][y]=max(z[x][y],dfs(x-1,y)+1);
if(t[x+1][y]>t[x][y])z[x][y]=max(z[x][y],dfs(x+1,y)+1);
if(t[x][y-1]>t[x][y])z[x][y]=max(z[x][y],dfs(x,y-1)+1);
if(t[x][y+1]>t[x][y])z[x][y]=max(z[x][y],dfs(x,y+1)+1);
return z[x][y];
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>t[i][j],s=max(s,t[i][j]);
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)u=max(u,dfs(i,j));
cout<<u;
return 0;
}