#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int d,c,ans = -1,un = -1;
int map[110][110];
int dx[] = {1,-1,0,0};
int dy[] = {0,0,1,-1};
int f[110][110];
int dfs(register int x,register int y) {
if(f[110][110]) {
return f[110][110];
}
f[x][y] = 1;
for(register int i = 0;i < 4;i++) {
register int xx = x+dx[i];
register int yy = y+dy[i];
if(xx < 1 || xx > d || yy < 1 || yy > c || map[xx][yy] >= map[x][y])
continue;
dfs(xx,yy);
f[x][y] = max(f[x][y],f[xx][yy]+1);
}
return f[x][y];
}
int main() {
cin >> d >> c;
for(register int i = 1;i <= d;i++) {
for(register int j = 1;j <= c;j++) {
scanf("%d",&map[i][j]);
}
}
for(register int i = 1;i <= d;i++) {
for(register int j = 1;j <= c;j++) {
un = max(dfs(i,j),un);
}
}
printf("%d",un);
return 0;
}