#include<bits/stdc++.h>
using namespace std;
int r,c;
int book[101][101],ditu[101][101],dp[101][101],ans;
int main(){
cin >> r >> c;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin >> ditu[i][j];
dp[i][j]=1;
}
}
for(int k=1;k<=r*c;k++){
int mini=INT_MAX;
int x=0;
int y=0;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
if(book[i][j]==0&&mini>ditu[i][j]){
x=i;
y=j;
mini=ditu[i][j];
}
}
}
book[x][y]=1;
for(int i=1;i>=-1;i--){
for(int j=1;j>=-1;j--){
if(ditu[i+x][j+y]>ditu[x][y] && book[i+x][j+y]==0){
dp[i+x][j+y]=max(dp[i+x][j+y],dp[x][y]+1);
}
}
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
ans=max(ans,dp[i][j]);
}
}
cout << ans;
return 0;
}