#include <bits/stdc++.h>
using namespace std;
void dfs(int x,int y,int c, int w[][201], int g[][201], int *dx, int *dy){
w[x][y] = c;
for(int i=0; i<8;i++){
int nx = x+dx[i], ny = y+dy[i];
if(g[nx][ny] && !w[nx][ny]) dfs(nx,ny,c,w,g,dx,dy);
}
}
int main(){
int row, col, set = 1,t;
cin >> t;
while(t--)
{
int g[201][201] = {0};
int w[201][201] = {0};
int dx[8] = {-1,0,1,1,1,0,-1,-1};
int dy[8] = {1,1,1,0,-1,-1,-1,0};
scanf("%d%d", &row, &col);
for(int i=1; i<=row; i++)
for(int j=1; j<=col; j++)
scanf("%d", &g[i][j]);
for(int i=1; i<=row;i++)
for(int j=1; j<=col; j++)
if(g[i][j] && !w[i][j])
dfs(i,j,set++,w,g,dx,dy);
unordered_map<int,int> mp;
for(int i=1; i<=row;i++){
for(int j=1; j<=col; j++){
if (w[i][j]) mp[w[i][j]]++;
}
}
int ans = 0;
for(auto it=mp.begin();it!=mp.end();it++){
ans = max(ans,it->second);
}
printf("%d\n",ans);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZvaWQgZGZzKGludCB4LGludCB5LGludCBjLCBpbnQgd1tdWzIwMV0sIGludCBnW11bMjAxXSwgaW50ICpkeCwgaW50ICpkeSl7CiAgICB3W3hdW3ldID0gYzsKICAgIGZvcihpbnQgaT0wOyBpPDg7aSsrKXsKICAgICAgICBpbnQgbnggPSB4K2R4W2ldLCBueSA9IHkrZHlbaV07CiAgICAgICAgaWYoZ1tueF1bbnldICYmICF3W254XVtueV0pIGRmcyhueCxueSxjLHcsZyxkeCxkeSk7CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBpbnQgcm93LCBjb2wsIHNldCA9IDEsdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKQogICAgewogICAgICAgIGludCBnWzIwMV1bMjAxXSA9IHswfTsKICAgICAgICBpbnQgd1syMDFdWzIwMV0gPSB7MH07CiAgICAgICAgaW50IGR4WzhdID0gey0xLDAsMSwxLDEsMCwtMSwtMX07CiAgICAgICAgaW50IGR5WzhdID0gezEsMSwxLDAsLTEsLTEsLTEsMH07CiAgICAgICAgc2NhbmYoIiVkJWQiLCAmcm93LCAmY29sKTsKCiAgICAgICAgZm9yKGludCBpPTE7IGk8PXJvdzsgaSsrKQogICAgICAgICAgICBmb3IoaW50IGo9MTsgajw9Y29sOyBqKyspCiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCAmZ1tpXVtqXSk7CgogICAgICAgIGZvcihpbnQgaT0xOyBpPD1yb3c7aSsrKQogICAgICAgICAgICBmb3IoaW50IGo9MTsgajw9Y29sOyBqKyspCiAgICAgICAgICAgICAgICBpZihnW2ldW2pdICYmICF3W2ldW2pdKQogICAgICAgICAgICAgICAgICAgIGRmcyhpLGosc2V0KyssdyxnLGR4LGR5KTsKCiAgICAgICAgdW5vcmRlcmVkX21hcDxpbnQsaW50PiBtcDsKICAgICAgICBmb3IoaW50IGk9MTsgaTw9cm93O2krKyl7CiAgICAgICAgICAgIGZvcihpbnQgaj0xOyBqPD1jb2w7IGorKyl7CiAgICAgICAgICAgICAgICBpZiAod1tpXVtqXSkgbXBbd1tpXVtqXV0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpbnQgYW5zID0gMDsKICAgICAgICBmb3IoYXV0byBpdD1tcC5iZWdpbigpO2l0IT1tcC5lbmQoKTtpdCsrKXsKICAgICAgICAgICAgYW5zID0gbWF4KGFucyxpdC0+c2Vjb25kKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIlZFxuIixhbnMpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K