#include <bits/stdc++.h>
using namespace std;
int n, m, K, mn, cas, s[605][605];
int P[17], Q[17], up[17], ans[17], vis[17], sum[17], a[17][605][605];
int fc(int A, int B) {
  int t = 0;
  for (int i = 1; i <= m; i++) {
    int x = 0, tx = 0, y = 0, ty = 0;
    if (n / K > 1) {
      x += a[A][n / K - 1][i], tx++, y += a[B][2][i], ty++;
      if (i > 1) x += a[A][n / K - 1][i - 1], tx++, y += a[B][2][i - 1], ty++;
      if (i < m) x += a[A][n / K - 1][i + 1], tx++, y += a[B][2][i + 1], ty++;
    }
    x += a[A][n / K][i], tx++, y += a[B][1][i], ty++;
    if (i > 1) x += a[A][n / K][i - 1], tx++, y += a[B][1][i - 1], ty++;
    if (i < m) x += a[A][n / K][i + 1], tx++, y += a[B][1][i + 1], ty++;
    t += abs(x / tx - y / ty) * abs(x / tx - y / ty);
  }
  return t;
}
int cal(int x, int y) {
  int t = 0;
  memset(P, 0, sizeof P), P[1] = x, P[K] = y;
  memset(vis, 0, sizeof vis), vis[P[1]] = vis[P[K]] = 1;
  for (int i = 2; i < K; i++) {
    for (int j = 1; j <= K; j++)
      if (!vis[j]) up[j] = fc(P[i - 1], j);
    for (int j = 1; j <= K; j++)
      if (!vis[j] && (!P[i] || up[j] < up[P[i]])) P[i] = j;
    vis[P[i]] = 1, t += up[P[i]];
  }
  t += fc(P[K - 1], P[K]);
  return t;
}
int getV(int *P) {
  int t = 0;
  for (int i = 2; i <= K; i++) t += fc(P[i - 1], P[i]);
  return t;
}
int main() {
  for (scanf("%d", &cas); cas--;) {
    memset(a, 0, sizeof a);
    memset(s, 0, sizeof s);
    memset(sum, 0, sizeof sum);
    scanf("%d%d%d", &n, &m, &K);
    for (int ord = 1; ord <= K; ord++)
      for (int i = 1; i <= n / K; i++)
        for (int j = 1; j <= m; j++) scanf("%d", &a[ord][i][j]);
    mn = 1 << 30;
    for (int i = 1; i <= K; i++)
      for (int j = 1; j <= K; j++)
        if (i != j) {
          int key = cal(i, j);
          if (key < mn) {
            mn = key;
            for (int k = 1; k <= K; k++) ans[P[k]] = k;
          }
        }
    for (int i = 1; i <= K; i++) printf("%d ", ans[i]);
    puts("");
  }
  return 0;
}
