//记忆化搜索
#include<stdio.h>
#include<string>
int h[100][100],r,c;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int ans[100][100];
int dp(int a,int b)
{
if(ans[a][b])return ans[a][b];
int x,y,s,ma=0;
for(int i=0;i<4;i++)
{
x=a+dx[i];
y=b+dy[i];
if(x>=0&&x<r&&y>=0&&y<c&&h[x][y]<h[a][b])
{
s=dp(x,y);
if(s>ma)ma=s;
}
}
ans[a][b]=ma+1;
return ans[a][b];
}
int main()
{
//freopen("t.txt","r",stdin);
int i,j,t,maxn;
while(scanf("%d%d",&r,&c)!=EOF)
{
memset(ans,0,sizeof(ans));
maxn=-1;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
scanf("%d",&h[i][j]);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
t=dp(i,j);
if(maxn<t)maxn=t;
}
}
printf("%d\n",maxn);
}
return 0;
}