#include <iostream>
using namespace std;

float TFrm_Main::GetMemoryTotalPhys()  
{
    TMemoryStatus *ms = new TMemoryStatus(); //this is in borland
    GlobalMemoryStatus(ms);
    int dw_Len = ms->dwLength;
    int dw_memLoad = ms->dwMemoryLoad;
    unsigned long dw_TotPhyMem = ((ms->dwTotalPhys/1024.0)); //1024 is used to convert byte to kilobyte here
    unsigned long dw_AvailPhyMem = ((ms->dwAvailPhys/1024.0));
    unsigned long dw_TotPgFile = ((ms->dwTotalPageFile/1024.0));
    unsigned long dw_AvailPgfile = ((ms->dwAvailPageFile/1024.0));
    unsigned long dw_TotVirMem = ((ms->dwTotalVirtual/1024.0));
    unsigned long dw_AvailVirMem = ((ms->dwAvailVirtual/1024.0));
    unsigned long tot_Commit = (dw_TotPgFile/1024.0);
    unsigned long use_Commit = ((dw_TotPgFile-dw_AvailPgfile)/1024.0);
    delete ms;
    return((use_Commit/(float)tot_Commit)*100.0);
}

int main() {
	int lP;
	int lM;
	int status;
	int suma;
	int i, j, k;
	const int max = 150;
	
	cin >> lP;
	
	for (i = 1; i <= lP; i++ ) 
	{
		cin >> lM;
		char tablica [max] [max];
		for (j = 1; j <= lM; j++)
		{
			for (k = 1; k <= lM; k++)
			{
				cin >> tablica[ j ] [ k ];
			}
		}
		
		suma = 0;
		for(j = 1; j <= lM; j++)
		{
		status = 1;
			for (k = 1; k <= lM; k++)
			{
				if (j + k <= lM)
				{
					if (tablica[k][j+k]  == '0')
						status = 0;
				
				}
				else if (tablica[k][k+j-lM] == '0')
					status = 0;
			}
		if(status == 1)
			suma = suma + 1;
		}
		cout << suma << endl;
		
		
	}
	
	cout << GetMemoryTotalPhys();	
	return 0;
}