#include#include #include using namespace std; const int maxn=105; int dp[maxn][maxn]; int mpt[maxn][maxn]; int dir[4][2]={0,1,1,0,-1,0,0,-1}; int n,m; int dfs(int x,int y){ if(dp[x][y]>0)return dp[x][y]; for(int i=0;i<4;i++){ int tx=x+dir[i][0]; int ty=y+dir[i][1]; if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&mpt[x][y]>mpt[tx][ty]){ dp[x][y]=max(dp[x][y],1+dfs(tx,ty)); } } return dp[x][y]; } int main(){ while(scanf(%d%d,&n,&m)!=EOF){ int len=0; memset(dp,0,sizeof(dp)); memset(mpt,0,sizeof(mpt)); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf(%d,&mpt[i][j]); } } int maxx=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(dp[i][j]==0){ int ans=dfs(i,j); if(ans>maxx)maxx=ans; } } } printf(%d ,maxx+1); } return 0; }