#include<iostream>
#include<cstdio>
using namespace std;
int r,c,i,j,flag;
int x,y;
int h[105][105];
int g[105][105];
bool b[105][105];
int bx[5]={0,1,-1,0,0};
int by[5]={0,0,0,1,-1};
int a(int ii,int jj)
{
if(b[ii][jj])return g[ii][jj];
b[ii][jj]=1;
for(int k=1;k<=4;k++)
{
x=ii+bx[k];y=jj+by[k];
if(h[ii][jj]>h[x][y]&&x>0&&x<=r&&y>0&&y<=c)
{
a(x,y);
g[ii][jj]=max(g[ii][jj],g[x][y]+1);
}
}
return g[ii][jj];
}
int main()
{
cin>>r>>c;
for(i=1; i<=r; i++)
{
for(j=1; j<=c; j++)
{
cin>>h[i][j];
}
}
int m=0;
for(i=1;i<=r;i++)
{
for(j=1;j<=c;j++)
{
m=max(m,a(i,j));
}
}
cout<<m<<endl;
return 0;
}