#include<bits/stdc++.h>
using namespace std;
int r,c,a[105][105],b[105][105],ans;
const int zl[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int dfs(int x,int y){
if(b[x][y]!=0)return b[x][y];
b[x][y]=1;
for(int i=0;i<4;i++){
int xx=x+zl[i][0],yy=y+zl[i][1];
if(xx<=r&&yy<=c&&xx>0&&yy>0&&a[x][y]>a[xx][yy]){
dfs(xx,yy);
b[x][y]=max(b[x][y],b[xx][yy]+1);
}
}
return b[x][y];
}
int main(){
memset(b,0,sizeof(b));
scanf("%d%d",&r,&c);
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
int sum=dfs(i,j);
ans=max(ans,sum);
}
}
printf("%d",ans);
return 0;
}