#include<bits/stdc++.h>
using namespace std;#definedbdouble#definelllonglong#definescscanf#defineprprintf#definefifirst#definesesecond#definepbpush_back#definem_pmake_pair#definePirpair<int,int>#defineinf0x3f3f3f3f#defineINF0x3f3f3f3f3f3f3f3f/*==========ACMer===========*/constint N =305;int n, m, a[N][N];int f[2][N][N];
bool check(int x,int y,int z){if(x <0|| y <0|| x + z -1> n || y + z -1> m)return0;for(int i =1; i <= z; i ++){int tx = x + i -1;int ty = y + i -1;if(a[x][ty]!= a[x + z -1][ty])return0;if(a[tx][y]!= a[tx][y + z -1])return0;}for(int l = y, r = y + z -1; l < r; l ++, r --){if(a[x][l]!= a[x][r])return0;}for(int l = x, r = x + z -1; l < r; l ++, r --){if(a[l][y]!= a[r][y])return0;}return1;}intsov1(int x,int y){int len =1, ans =1;while(check(x - len, y - len,(len +1)*2-1)){
len ++;
ans = len *2-1;}return ans;}intsov2(int x,int y){if(check(x, y,2)==0)return0;int len =1, ans =2;while(check(x - len, y - len,(len +1)*2)){
len ++;
ans = len *2;}return ans;}intmain(){int T;sc("%d",&T);while(T --){sc("%d %d",&n,&m);for(int i =1; i <= n; i ++)for(int j =1; j <= m; j ++)sc("%d",&a[i][j]);int ans =1;for(int x =1; x <= n; x ++){for(int y =1; y <= m; y ++){
ans =max(ans,max(sov1(x, y),sov2(x, y)));}}pr("%d\n", ans);}return0;}