#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>

using namespace std;

int b[610][610];
double a[610][610];
int seq[20],rank[20],Ans[20];
bool vis[20];
int T,n,m,k,st,ans;

double sqr(double x) {return x*x;}

int main()
{
//	freopen("sample.in","r",stdin);
//	freopen("a.out","w",stdout);
	scanf("%d",&T);
	for (int t=1;t<=T;t++)
	{
		scanf("%d%d%d",&n,&m,&k);
		for (int i=1;i<=n;i++)
		  for (int j=1;j<=m;j++)
		    scanf("%d",&b[i][j]),a[i][j]=b[i][j];
		int block=n/k;
		for (int i=1;i<=k;i++)
		{
			for (int j=2;j<m;j++) a[block*(i-1)+1][j]=(b[block*(i-1)+1][j]+b[block*(i-1)+2][j]+b[block*(i-1)+1][j+1]+b[block*(i-1)+1][j-1])/4.0;
			for (int j=2;j<m;j++) a[block*i][j]=(b[block*i][j]+b[block*i-1][j]+b[block*i][j-1]+b[block*i][j+1])/4.0;
		}
		double ans=1e18;
		for (int p=1;p<=k;p++)
		{
			double SUM=0.0;
			memset(vis,0,sizeof(vis));
			seq[1]=st=p;
			for (int t=1;t<k;t++)
			{
				vis[st]=1;
				int now=0;
				double ANS=1e18;
				for (int i=1;i<=k;i++)
			  	if (!vis[i])
			  	{
			  		double sum=0.0;
			  		for (int j=1;j<=m;j++)
					{
						double x=1e18;
						if (abs(a[block*st][j]-a[block*(i-1)+1][j])<x) x=abs(a[block*st][j]-a[block*(i-1)+1][j]);
						if (j>1 && abs(a[block*st][j]-a[block*(i-1)+1][j-1])<x) x=abs(a[block*st][j]-a[block*(i-1)+1][j-1]);
						if (j<m && abs(a[block*st][j]-a[block*(i-1)+1][j+1])<x) x=abs(a[block*st][j]-a[block*(i-1)+1][j+1]);
					  	sum+=sqr(x);
					}
			  		if (sum<ANS) ANS=sum,now=i;
			  	}
				st=now;seq[t+1]=st;
				SUM+=ANS;
			}
			for (int i=1;i<=k;i++) rank[seq[i]]=i;
			if (SUM<ans)
			{
				ans=SUM;
				for (int i=1;i<=k;i++) Ans[i]=rank[i];
			}
		}
		for (int i=1;i<k;i++) printf("%d ",Ans[i]);printf("%d\n",Ans[k]);
	}
	return 0;
}

