#include <bits/stdc++.h>
using namespace std;
int a[1011][1011];
int f[1005][1005];
int ser(int i,int j)
{
if(f[i][j]>0)return f[i][j];
int ans=1;
// printf("%d ", a[i][j]);
if(a[i+1][j]<a[i][j]&&a[i+1][j]!=0)
ans=max(ans,ser(i+1,j)+1);
if(a[i][j+1]<a[i][j]&&a[i][j+1]!=0)
ans=max(ans,ser(i,j+1)+1);
if(a[i-1][j]<a[i][j]&&a[i-1][j]!=0)
ans=max(ans,ser(i-1,j)+1);
if(a[i][j-1]<a[i][j]&&a[i][j-1]!=0)
ans=max(ans,ser(i,j-1)+1);
f[i][j]=ans;
return ans;
}
int main()
{
int n,b;
scanf("%d %d",&n,&b);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=b;j++)
{
scanf("%d",&a[i][j]+1);
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=b;j++)
{
int p=ser(i,j);
f[i][j]=p;
ans=max(ans,f[i][j]);
}
}
printf("%d",ans);
}