#include<iostream>
#include<cstdio>
using namespace std;
int n,m,ma=0;
int a[101][101];
bool f[101][101];
int fxszx[]={0,0,1,-1};
int fxszy[]={1,-1,0,0};
void dfs(int dx,int dy,int t)
{
if(t>ma)ma=t;
for(int i=0;i<4;i++)
{
int x=dx+fxszx[i];
int y=dy+fxszy[i];
if(x<1||y>m||x>n||y<1)continue;
if(a[x][y]>a[dx][dy])
{
f[x][y]=true;
dfs(x,y,t+1);
}
}
return;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
if(f[i][j])continue;
dfs(i,j,1);
}
cout<<ma;
return 0;
}