#include <iostream>
using namespace std;
int t;
int m,n;
char mp[55][55];//不能写成 int 数组
bool vis[55][55];
int dx[ ]={1,0,-1,0},dy[ ]={0,1,0,-1};
int res;
void dfs_1(int x,int y){
vis[x][y] = true;
//陆地向四个方向拓展
for(int i=0;i<4;i++){
int nx = x+dx[i],ny = y+dy[i];
if(mp[nx][ny]==0||vis[nx][ny])continue;
dfs_1(nx, ny);
}
}
void dfs(int x,int y){
vis[x][y] = true;
//海洋向九个方向探索
for(int i=-1;i<=1;i++){
for(int j=-1;j<=1;j++){
int nx = x+i,ny = y+j;
//防止越界
if(nx<0||nx>m+1||ny<0||ny>n+1||vis[nx][ny])continue;
if(mp[nx][ny]==0)dfs(nx, ny);//探索海洋
else dfs_1(nx, ny),res++;//探索陆地
}
}
}
int main() {
cin>>t;
while(t--){
cin>>m>>n;
memset(mp,0,sizeof mp);
memset(vis, false, sizeof vis);
res = 0;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
char c;cin>>c;
mp[i][j] = c-'0';
}
}
dfs(0, 0);
cout<<res<<'\n';
}
return 0;
}