1 #include<iostream>
2 #include<cstring>
3 #define max(a,b) (a>b?a:b)
4 using namespace std;
5
6 int a[105][105];
7 int m,n;
8 int d[4][2]={0,1,1,0,0,-1,-1,0};
9 int dp[105][105];
10 int maxlen;
11
12 void dfs(int x,int y)
13 {
14 if(x<0||x>=m||y<0||y>=n)return;
15 for(int i=0;i<4;i++)
16 {
17 int xx=x+d[i][0];
18 int yy=y+d[i][1];
19 if(a[xx][yy]<a[x][y])
20 {
21 dp[xx][yy]=max(dp[xx][yy],dp[x][y]+1);
22 dfs(xx,yy);
23 }
24 }
25 maxlen=max(dp[x][y],maxlen);
26 }
27
28 int main()
29 {
30 //freopen("in.txt","r",stdin);
31 int t,i,j;
32 cin>>t;
33 while(t--)
34 {
35 maxlen=0;
36 memset(dp,0,sizeof(dp));
37 cin>>m>>n;
38 for(i=0;i<m;i++)
39 for(j=0;j<n;j++)
40 cin>>a[i][j];
41 for(i=0;i<m;i++)
42 for(j=0;j<n;j++)
43 dfs(i,j);
44 cout<<maxlen+1<<endl;
45 }
46 return 0;
47 }