1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 long long map[102][102];
6 int n,m,ans=0,all;
7 void dfs(int x,int y,int kt,bool ciji)
8 {
9 ans=max(ans,kt);
10 if(ciji)
11 {
12 if(x+1<=n&&map[x+1][y]>map[x][y]&&map[x+1][y]<=all) dfs(x+1,y,kt+1,!ciji);
13 if(y+1<=m&&map[x][y+1]>map[x][y]&&map[x][y+1]<=all) dfs(x,y+1,kt+1,!ciji);
14 }
15 else
16 {
17 if(x+1<=n&&map[x+1][y]<map[x][y]&&map[x+1][y]<=all) dfs(x+1,y,kt+1,!ciji);
18 if(y+1<=m&&map[x][y+1]<map[x][y]&&map[x][y+1]<=all) dfs(x,y+1,kt+1,!ciji);
19 }
20 }
21 int main()
22 {
23 memset(map,0,sizeof(map));
24 scanf("%d%d",&n,&m);
25 for(int i=1;i<=n;i++)
26 for(int j=1;j<=m;j++)
27 scanf("%lld",&map[i][j]);
28 for(int i=1;i<=n;i++)
29 {
30 for(int j=1;j<=m;j++)
31 {
32 all=map[i][j];
33 dfs(i,j,1,false);// ciji==true 高 fasle 低
34 }
35 }
36 printf("%d",ans);
37 return 0;
38 }