#include<bits/stdc++.h>
#define zjx331 cin.tie(0);
using namespace std;
int n,m,a[201][201],dp[201][201],maxn=INT_MIN;
int dx[]= {1,-1,0,0};
int dy[]= {0,0,1,-1};
int zjx(int x,int y) {
if(dp[x][y])return dp[x][y];
dp[x][y]=1;
for(int i=0; i<4; i++) {
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>0&&ty>0&&tx<=n&&ty<=m&&a[x][y]>a[tx][ty]) {
zjx(tx,ty);
dp[x][y]=max(dp[x][y],dp[tx][ty]+1);
}
}
}
int main() {
int x,y;
zjx331;
cin>>n>>m;
for(x=1; x<=n; x++)
for(y=1; y<=m; y++)
cin>>a[x][y];
for(x=1; x<=n; x++)
for(y=1; y<=m; y++)
maxn=max(maxn,zjx(x,y));
cout<<maxn;
return 0;
}