// File Name: ny0j27.cpp
// Author: bo_jwolf
// Created Time: 2013年04月30日 星期二 14:51:16
#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>
using namespace std;
const int maxn = 105 ;
int mapp[ maxn ][ maxn ] ;
int m , n;
int dis[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int visited[ maxn ][ maxn ] ;
void dfs( int x, int y )
{
mapp[ x ][ y ] = 0 ;
for( int i = 0 ; i < 4 ;i++ )
{
int x1 = x + dis[ i ][ 0 ];
int y1 = y + dis[ i ][ 1 ];
if( x1 >=0 && x1 < m && y1 >= 0 && y1 < n && mapp[ x1 ][ y1 ])
dfs( x1 , y1 );
}
}
int main()
{
int Case;
int i , j , sum ;
// int m , n;
// int sum ;
//while( cin >> Case )
cin >> Case;
{
while( Case-- )
{
cin >> m >> n ;
for( i = 0 ; i < m ; i++ )
for( j = 0 ; j < n ; j++ )
cin >> mapp[ i ][ j ];
sum = 0;
for( i = 0 ; i < m ; i++ )
for( j = 0 ; j < n ; j++ )
if( mapp[ i ][ j ] == 1 )
{
sum++,
dfs( i , j );
}
cout << sum <<endl;
}
}
return 0;
}