WA on #4
#include <bits/stdc++.h>
using namespace std;
#define int long long
int t, n, fa[5001], siz[5001], edg[5001], cnt, num[5001];
char mychar(){
char c = getchar();
while (c == ' ' || c == '\n' || c == '\r' || c == '\t') c = getchar();
return c;
}
int find(int u){if (fa[u] == u) return u; return fa[u] = find(fa[u]);}
signed main(){
scanf("%lld", &t);
while (t--){
scanf("%lld", &n); cnt = 0;
for (int i = 1; i <= n; i++) fa[i] = i, siz[i] = 1, edg[i] = num[i] = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (mychar() == '1'){
num[i]++;
int fi = find(i), fj = find(j);
if (fi != fj){
fa[fj] = fi;
siz[fi] += siz[fj], siz[fj] = 0;
}
}
int flag = 1;
for (int i = 1; i <= n; i++){
if (siz[i] == n){puts("0"); flag = 0; break;}
else if (siz[i] == 1){
printf("1\n%lld\n", i);
flag = 0; break;
}
else if (siz[i]) cnt++;
}
if (!flag) continue;
for (int i = 1; i <= n; i++) edg[i] = siz[i] * (siz[i] - 1);
for (int i = 1; i <= n; i++){
int fi = find(i);
if (num[i] * siz[fi] < edg[fi]){
printf("1\n%lld\n", i);
flag = 0; break;
}
}
if (!flag) continue;
if (cnt > 2){
printf("2\n1 ");
for (int i = 2; i <= n; i++) if (fa[i] != fa[1]){printf("%lld\n", i); break;}
}
else{
int mins = 100001, minid = 0;
for (int i = 1; i <= n; i++)
if (siz[i] < mins && siz[i]) mins = siz[i], minid = i;
printf("%lld\n", mins);
for (int i = 1; i <= n; i++)
if (fa[i] == minid) printf("%lld ", i);
puts("");
}
}
return 0;
}