package planning;
import java.util.*;
public class Skating {
static int map[][];
static int dp[][];
static int sum,r,c;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
r=sc.nextInt();
c=sc.nextInt();
map=new int[r+1][c+1];
dp=new int[r+1][c+1];
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
{
map[i][j]=sc.nextInt();
dp[i][j]=-1;
}
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
sum=Math.max(sum,dfs(i,j));
System.out.println(sum);
}
static int dfs(int x,int y)
{
if(dp[x][y]!=-1)return dp[x][y];
int t=1;
for(int dx=-1;dx<=1;dx++)
for(int dy=-1;dy<=1;dy++)
if(dx!=dy&&dx+dy!=0&&(dx!=0||dy!=0))
if(inmap(x+dx,y+dy)&&map[x][y]>map[x+dx][y+dy])
t=Math.max(t, dfs(x+dx,y+dy)+1);
dp[x][y]=t;
return dp[x][y];
}
static boolean inmap(int x,int y) {
return x>=0&&y>=0&&x<r&&y<c;
}
}