#include<bits/stdc++.h>
using namespace std;
int n,m,a[1001][1001],cnt[1001][1001];
int X[5]={1,0,-1,0},Y[5]={0,1,0,-1};
int dfs(int x,int y){
if(x>n||y>m||x<1||y<1)return 0;
int ans=1,ma=-10;
for(int i=0;i<=3;i++)
{
int xx=x+X[i],yy=y+Y[i];
if(a[xx][yy]<a[x][y])
if(cnt[xx][yy]!=0)ma=max(ma,cnt[xx][yy]);
else ma=max(ma,dfs(xx,yy));
}
return ans+ma;
}
int main()
{
int mx=-10;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cnt[i][j]=dfs(i,j),mx=max(mx,cnt[i][j]);
cout<<mx;
return 0;
}