#include<cstdio>
#include<iostream>
using namespace std;
long long int map[101][101];
int m,n,ans=0;
void search(int now_x,int now_y,bool if_,int now,long long int max_dis)
{
if(now>ans) ans=now;
if(now_x+1<=m)
{
if(if_&&map[now_x+1][now_y]<=max_dis&&map[now_x+1][now_y]>map[now_x][now_y])
{
search(now_x+1,now_y,!if_,now+1,max_dis);
}
if(!if_&&map[now_x+1][now_y]<map[now_x][now_y])
{
search(now_x+1,now_y,!if_,now+1,max_dis);
}
}
if(now_y+1<=n)
{
if(if_&&map[now_x][now_y+1]<=max_dis&&map[now_x][now_y+1]>map[now_x][now_y])
{
search(now_x,now_y+1,!if_,now+1,max_dis);
}
if(!if_&&map[now_x][now_y+1]<map[now_x][now_y])
{
search(now_x,now_y+1,!if_,now+1,max_dis);
}
}
}
int main()
{
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++) cin>>map[i][j];
}
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
search(i,j,false,1,map[i][j]);
}
}
cout<<ans<<endl;
return 0;
}