# include<iostream> # include<cstdio> # include<cmath> # include<algorithm> # include<cstring> using namespace std; const int MAX_N = 100; int a[MAX_N+8][MAX_N+8]; int vis[MAX_N+8][MAX_N+8]; int dis[4][2] = {{0,1},{1,0},{0,-1},{-1,0}}; int r, c; int search( int x, int y ) { if ( vis[x][y] != -1 ) return vis[x][y]; int t = 0; int nx, ny; for ( int i = 0;i < 4;i++ ) { nx = x + dis[i][0]; ny = y + dis[i][1]; if ( 0 <= nx&&nx < r&&0 <= ny&&ny < c&&a[x][y] > a[nx][ny] ) { t = max( search( nx, ny ),t ); } } return vis[x][y] = t+1; } int main(void) { memset(vis,-1,sizeof(vis)); scanf("%d%d",&r,&c); for ( int i = 0;i < r;i++ ) { for ( int j = 0;j < c;j++ ) { cin>>a[i][j]; } } int max = 0; for ( int i = 0;i < r;i++ ) { for ( int j = 0;j < c;j++ ) { if ( max < search( i,j )) max = search( i, j ); } } cout<<max; return 0; }