#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:128000000")
using namespace std;
const double PI = acos(-1.0);
template <class T>
T SQR(const T &a) {
  return a * a;
}
void run() {
  int n, m, r;
  cin >> n >> m >> r;
  int D[61][61][61];
  int B[61][61];
  int INF = 1e9;
  for (int i = (0), ei = (n); i < ei; i++)
    for (int j = (0), ej = (n); j < ej; j++) B[i][j] = INF;
  for (int i = (0), ei = (m); i < ei; i++)
    for (int j = (0), ej = (n); j < ej; j++)
      for (int k = (0), ek = (n); k < ek; k++) scanf("%d", &D[i][j][k]);
  for (int c = (0), ec = (m); c < ec; c++) {
    for (int k = (0), ek = (n); k < ek; k++)
      for (int i = (0), ei = (n); i < ei; i++)
        for (int j = (0), ej = (n); j < ej; j++) {
          if (D[c][i][j] > (D[c][i][k] + D[c][k][j]))
            D[c][i][j] = (D[c][i][k] + D[c][k][j]);
        };
    for (int i = (0), ei = (n); i < ei; i++)
      for (int j = (0), ej = (n); j < ej; j++) {
        if (B[i][j] > (D[c][i][j])) B[i][j] = (D[c][i][j]);
      };
  }
  int Ans[61][61][61];
  for (int i = (0), ei = (n); i < ei; i++)
    for (int j = (0), ej = (n); j < ej; j++) Ans[i][j][0] = B[i][j];
  for (int t = (1), et = (61); t < et; t++) {
    for (int i = (0), ei = (n); i < ei; i++)
      for (int j = (0), ej = (n); j < ej; j++) {
        Ans[i][j][t] = Ans[i][j][t - 1];
        for (int k = (0), ek = (n); k < ek; k++) {
          if (Ans[i][j][t] > (Ans[i][k][t - 1] + B[k][j]))
            Ans[i][j][t] = (Ans[i][k][t - 1] + B[k][j]);
        };
      }
  }
  for (int i = (0), ei = (r); i < ei; i++) {
    int s, t, k;
    scanf("%d%d%d", &s, &t, &k);
    if (k > 60) k = 60;
    --s;
    --t;
    printf("%d\n", Ans[s][t][k]);
  }
}
int main() {
  time_t beg = clock();
  run();
  return 0;
}
