#include <bits/stdc++.h>
#define rep(k,n) for(int i=k;i<n;i++)
#define loop(k,n) for(int j=k;j<n;j++)
using namespace std;
int main(){
int t;
cin>>t;
rep(0,t){
int n,p1=0,p2=0;
cin>>n;
string s[n];
rep(0,n){
cin>>s[i];
}
rep(0,n){
loop(0,n/2){
if(s[i][j]=='1'){
p1++;
//ddd cout<<p1<<" ";
}
}
}
rep(0,n){
loop(n/2,n){
if(s[i][j]=='1'){
p2++;
// cout<<p2<<endl;
}
}
}
int arr[n]={0};
rep(0,n){
loop(0,n/2){
if(s[i][j]=='1'){
arr[i]++;
}
}
loop(n/2,n){
if(s[i][j]=='1'){
arr[i]--;
}
}
}
sort(arr,arr+n);
rep(0,n){
if(arr[i]<0){
arr[i]=-arr[i];
}
}
int max=arr[0];
rep(0,n){
if(max<arr[i]){
max=arr[i];
}
}
// cout<<max<<" ";
int diff;
if(p1>p2){
diff=p1-p2;
}
else{
diff=p2-p1;
}
int mindif=diff;
//cout<<p1<<" "<<p2;
// if(diff>=2*max){
// diff-=2*max;
// }
// else{
rep(0,n){
cout<<"f"<<arr[i];
if(diff>=2*arr[i]){
diff=min(diff,diff-2*arr[i]);
cout<<diff<<" ";
}
// }
}
cout<<diff<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcmVwKGssbikgZm9yKGludCBpPWs7aTxuO2krKykKI2RlZmluZSBsb29wKGssbikgZm9yKGludCBqPWs7ajxuO2orKykKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCl7CglpbnQgdDsKCWNpbj4+dDsKCXJlcCgwLHQpewoJCWludCBuLHAxPTAscDI9MDsKCQljaW4+Pm47CgkJc3RyaW5nIHNbbl07CgkJcmVwKDAsbil7CgkJCWNpbj4+c1tpXTsKCQkJCgkJCQoJCX0KCQkKCQlyZXAoMCxuKXsKCQkJbG9vcCgwLG4vMil7CgkJCQlpZihzW2ldW2pdPT0nMScpewoJCQkJCXAxKys7CgkJCQkvL2RkZAljb3V0PDxwMTw8IiAiOwoJCQkJfQoJCQl9CgkJfSAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJCQlyZXAoMCxuKXsKCQkJIGxvb3Aobi8yLG4pewoJCQkJaWYoc1tpXVtqXT09JzEnKXsKCQkJCQlwMisrOwoJCQkJLy8JY291dDw8cDI8PGVuZGw7CgkJCQl9CgkJCX0KCQl9CgkJaW50IGFycltuXT17MH07CgkJcmVwKDAsbil7CgkJCWxvb3AoMCxuLzIpewoJCQkJaWYoc1tpXVtqXT09JzEnKXsKCQkJCQlhcnJbaV0rKzsKCQkJCX0KCQkJfQoJCQlsb29wKG4vMixuKXsKCQkJCWlmKHNbaV1bal09PScxJyl7CgkJCQkJYXJyW2ldLS07CgkJCQl9CgkJCX0KCQkJCgkJfQoJCQlzb3J0KGFycixhcnIrbik7CgkJCXJlcCgwLG4pewoJCQkJaWYoYXJyW2ldPDApewoJCQkJCWFycltpXT0tYXJyW2ldOwoJCQkJfQoJCQl9CgkJCWludCBtYXg9YXJyWzBdOwoJCQlyZXAoMCxuKXsKCQkJCWlmKG1heDxhcnJbaV0pewoJCQkJCW1heD1hcnJbaV07CgkJCQl9CgkJCX0KCQkvLwljb3V0PDxtYXg8PCIgIjsKCQkJaW50IGRpZmY7CgkJCWlmKHAxPnAyKXsKCQkJCWRpZmY9cDEtcDI7CgkJCX0KCQkJZWxzZXsKCQkJCWRpZmY9cDItcDE7CgkJCX0KCQkJaW50IG1pbmRpZj1kaWZmOwoJCQkvL2NvdXQ8PHAxPDwiICI8PHAyOwoJCS8vCWlmKGRpZmY+PTIqbWF4KXsKCQkvLwkgICAgZGlmZi09MiptYXg7CgkJLy8JfQoJCS8vCWVsc2V7CgkJCXJlcCgwLG4pewoJCQkJY291dDw8ImYiPDxhcnJbaV07CgkJCSAgICBpZihkaWZmPj0yKmFycltpXSl7CgkJCSAgICAgICAgZGlmZj1taW4oZGlmZixkaWZmLTIqYXJyW2ldKTsKCQkJICAgICAgICBjb3V0PDxkaWZmPDwiICI7CgkJCSAgICB9CgkJLy8JfQoJCQl9CgkJCQoJCQljb3V0PDxkaWZmPDxlbmRsOwoJCX0KCQkJcmV0dXJuIDA7Cgl9CgkKCgkK