#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

const int MAXN=20;
const int SIZE=1<<20;

int P[MAXN+5];
int A[MAXN][MAXN];
int B[SIZE][MAXN];
bool dp[SIZE];
int N;

int main()
{
	int T;
	scanf("%d", &T);
	for (int i=0; i<21; i++) P[i]=(1<<i);
	while (T--)
	{
		scanf("%d", &N);
		for (int i=0; i<N; i++)
		{
			B[P[N]-1][i]=0;
			for (int j=0; j<N; j++)
			{
				scanf("%d", &A[i][j]);
				A[i][j]=-A[i][j];
				B[P[N]-1][i]+=A[i][j];
			}
		}
		memset(dp, 0, sizeof(dp)); dp[P[N]-1]=true;
		for (int mask=P[N]-1; mask>0; mask--)
		{
			if (!dp[mask]) continue;
			for (int i=0; i<N; i++)
				if ((mask&P[i])&&B[mask][i]<0)
				{
					int ss=mask^P[i]; dp[ss]=true;
					memcpy(B[ss], B[mask], sizeof(B[mask]));
					for (int j=0; j<N; j++) B[ss][j]-=A[j][i];
				}
		}
		vector<int> ans; ans.clear();
		for (int i=0; i<N; i++)
			if (dp[1<<i]) ans.push_back(i+1);
		if (ans.size()==0) puts("0");
		else 
		{
			printf("%d", ans[0]);
			for (int i=1; i<ans.size(); i++)
				printf(" %d", ans[i]);
			puts("");
		}
	}
	return 0;
}
