#include<bits/stdc++.h>
#define re register
#define ll long long
#define inl inline
ll h[105][105],f[105][105],ans(-1);
inl ll dfs(ll x,ll y){
if(f[x][y])return f[x][y];
if(h[x][y]>h[x+1][y])f[x][y]=std::max(dfs(x+1,y)+1,f[x][y]);
if(h[x][y]>h[x-1][y])f[x][y]=std::max(dfs(x-1,y)+1,f[x][y]);
if(h[x][y]>h[x][y+1])f[x][y]=std::max(dfs(x,y+1)+1,f[x][y]);
if(h[x][y]>h[x][y-1])f[x][y]=std::max(dfs(x,y-1)+1,f[x][y]);
return f[x][y];
}
int main(){
std::memset(f,0,sizeof(f));
re ll n,m;
scanf("%lld %lld",&n,&m);
for(re ll i(1);i<=n;++i){
for(re ll j(1);j<=m;++j)scanf("%lld",&h[i][j]);
}
for(re ll i(1);i<=n;++i){
for(re ll j(1);j<=m;++j)ans=std::max(ans,dfs(i,j));
}
printf("%lld",ans);
}