#include<bits/stdc++.h>
using namespace std;
int r,c,a[109][109],b=0,x,y,m=0,ans=0;
bool zouguo[109][109];
int dfs(int x,int y,int s){
zouguo[x][y]=true;
if(a[x][y]<a[x-1][y]&&!a[x-1][y]&&a[x][y]<a[x+1][y]&&!a[x+1][y]&&a[x][y]<a[x][y-1]&&!a[x][y-1]&&a[x][y]<a[x][y+1]&&!a[x][y+1]) return s;
if(a[x][y]>a[x-1][y]&&!a[x-1][y]) dfs(x-1,y,s+1);
if(a[x][y]>a[x+1][y]&&!a[x+1][y]) dfs(x+1,y,s+1);
if(a[x][y]>a[x][y-1]&&!a[x][y-1]) dfs(x,y-1,s+1);
if(a[x][y]>a[x][y+1]&&!a[x][y+1]) dfs(x,y+1,s+1);
}
int main(){
cin>>r>>c;
memset(zouguo,false,sizeof(zouguo));
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
ans=max(dfs(i,j,0),ans);
}
}
cout<<ans<<endl;
return 0;
}