#include <bits/stdc++.h>
using namespace std;
const long long inf = 1000000000000000000LL;
const int MAX = 605;
const int MAXK = 16;
int h, w, k;
int m[MAX][MAX];
int lower[MAX][MAX];
int upper[MAX][MAX];
long long a[MAXK][MAXK];
long long dp[MAXK][1 << MAXK];
void calc_dists() {
  int stripe = min(h / k, 3);
  int W = min(w, 4);
  for (int i = (0); i < (k); ++i) {
    for (int j = (0); j < (w - W + 1); ++j) {
      vector<int> u, l;
      for (int ii = (0); ii < (stripe); ++ii) {
        for (int jj = (0); jj < (W); ++jj) {
          u.push_back(m[i * h / k + ii][j + jj]);
          l.push_back(m[(i + 1) * h / k + ii - stripe][j + jj]);
        }
      }
      nth_element(u.begin(), u.begin() + u.size() / 2, u.end());
      nth_element(l.begin(), l.begin() + l.size() / 2, l.end());
      upper[i][j] = u[u.size() / 2];
      lower[i][j] = l[l.size() / 2];
    }
  }
  for (int i = (0); i < (k); ++i)
    for (int j = (0); j < (k); ++j) {
      if (i == j) continue;
      a[i][j] = 0;
      for (int r = (0); r < (w - W + 1); ++r) {
        a[i][j] += abs(lower[i][r] - upper[j][r]);
      }
    }
}
void solve() {
  scanf("%d%d%d", &h, &w, &k);
  for (int i = (0); i < (h); ++i)
    for (int j = (0); j < (w); ++j) scanf("%d", &m[i][j]);
  calc_dists();
  for (int i = (0); i < (k); ++i) dp[i][0] = 0;
  for (int mask = (1); mask < (1 << k); ++mask) {
    for (int i = (0); i < (k); ++i) {
      if (((mask >> i) & 1)) continue;
      dp[i][mask] = 1e18;
      for (int j = (0); j < (k); ++j) {
        if (!((mask >> j) & 1)) continue;
        dp[i][mask] = min(dp[i][mask], dp[j][mask ^ (1 << j)] + a[i][j]);
      }
    }
  }
  int p = 0;
  for (int i = (0); i < (k); ++i)
    if (dp[i][(1 << k) - 1 - (1 << i)] < dp[p][(1 << k) - 1 - (1 << p)]) p = i;
  int m = (1 << k) - 1 - (1 << p);
  vector<int> sol = {p};
  while (m) {
    for (int i = (0); i < (k); ++i) {
      if (((m >> i) & 1) == 1 && dp[p][m] == dp[i][m ^ (1 << i)] + a[p][i]) {
        sol.push_back(i);
        p = i;
        m ^= (1 << i);
        break;
      }
    }
  }
  vector<int> inv(k);
  for (int i = (0); i < (k); ++i) inv[sol[i]] = i;
  for (int i = (0); i < (k); ++i) printf("%d ", inv[i] + 1);
  puts("");
}
int main(void) {
  int q;
  scanf("%d", &q);
  for (int i = (0); i < (q); ++i) solve();
  return 0;
}
