//记忆化搜索
#include<stdio.h>
#include<string.h>
int a[200][200],vis[200][200],max,r,c;
int dx[]={0,0,-1,1},dy[]={-1,1,0,0};
int dfs(int x,int y)
{
int i,nx,ny,temp;
if(vis[x][y])
return vis[x][y];
for(i=0;i<4;i++)
{
nx=x+dx[i];
ny=y+dy[i];
if(nx<r&&nx>=0 &&ny>=0&&ny<c&&a[nx][ny]<a[x][y])
{
temp=dfs(nx,ny)+1;
if(vis[x][y]<temp)
vis[x][y]=temp;
}
}
return vis[x][y];
}
main()
{
int i,j,cc,rr;
//freopen("D:\\ppp.txt","r",stdin);
while(scanf("%d%d",&r,&c)!=EOF)
{
max=-1;
memset(vis,0,sizeof(vis));
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
vis[i][j]=dfs(i,j);
if(vis[i][j]>max)
max=vis[i][j];
}
printf("%d\n",max+1);
}
return 0;
}