#include <bits/stdc++.h>
using namespace std;
const int MAXN = 610, LOG = 17;
const long long int inf = 1000000000000ll;
inline int SQR(int x) { return x * x; }
int h, w, d, jedan;
int mat[MAXN][MAXN];
long long int cost[LOG][LOG];
long long int dp[1 << LOG][LOG];
pair<int, int> prije[1 << LOG][LOG];
int glavni[LOG];
int rek(int mask, int x) {
  if (__builtin_popcount(mask) == d) return 0;
  long long int &ret = dp[mask][x];
  if (ret != -1) return ret;
  ret = inf;
  for (int i = 0; i < d; i++) {
    if (!((1 << i) & mask)) {
      long long int t = rek(mask | (1 << i), i) + cost[x][i];
      if (t < ret) {
        ret = t;
        prije[mask][x] = pair<int, int>(mask | (1 << i), i);
      }
    }
  }
  return ret;
}
int main() {
  int test;
  scanf("%d", &test);
  for (int br = 0; br < test; br++) {
    scanf("%d %d %d", &h, &w, &d);
    jedan = h / d;
    for (int i = 0; i < h; i++)
      for (int j = 0; j < w; j++) scanf("%d", &mat[i][j]);
    for (int i = 0; i < d; i++)
      for (int j = 0; j < d; j++) {
        if (i == j) continue;
        int a = ((i + 1) * jedan) - 1;
        int b = j * jedan;
        long long int dist = 0;
        for (int k = 0; k < w; k++) {
          int gore = 0, dolje = 0;
          int koliko = min(5, jedan);
          for (int l = 0; l < koliko; l++) {
            dolje += mat[a - l][k];
            gore += mat[b + l][k];
          }
          dist += SQR(dolje - gore);
        }
        cost[i][j] = dist;
      }
    memset(dp, -1, sizeof(dp));
    memset(prije, -1, sizeof(prije));
    long long int mini = inf;
    int koji = 0;
    for (int i = 0; i < d; i++) {
      long long int t = rek(1 << i, i);
      if (t < mini) {
        mini = t;
        koji = i;
      }
    }
    vector<int> ispis;
    ispis.push_back(koji + 1);
    int mask = 1 << koji;
    for (int i = 0; i < d - 1; i++) {
      int novi_mask = prije[mask][koji].first;
      int novi_koji = prije[mask][koji].second;
      mask = novi_mask;
      koji = novi_koji;
      ispis.push_back(koji + 1);
    }
    for (int i = 0; i < d; i++) glavni[ispis[i]] = i + 1;
    for (int i = 1; i <= d; i++) printf("%d ", glavni[i]);
    printf("\n");
  }
  return 0;
}
