#include <bits/stdc++.h>
using namespace std;
const int INF = 1 << 29;
int main() {
  int n, m, q;
  scanf("%d%d%d", &n, &m, &q);
  static int d[1001][60][60];
  for (int t = 0; t < (1001); t++)
    for (int i = 0; i < (n); i++)
      for (int j = 0; j < (n); j++) d[t][i][j] = INF;
  {
    for (int _ = 0; _ < (m); _++) {
      int d_tmp[60][60];
      for (int i = 0; i < (n); i++)
        for (int j = 0; j < (n); j++) scanf("%d", d_tmp[i] + j);
      for (int k = 0; k < (n); k++)
        for (int i = 0; i < (n); i++)
          for (int j = 0; j < (n); j++)
            d_tmp[i][j] = min(d_tmp[i][j], d_tmp[i][k] + d_tmp[k][j]);
      for (int i = 0; i < (n); i++)
        for (int j = 0; j < (n); j++) d[0][i][j] = min(d[0][i][j], d_tmp[i][j]);
    }
  }
  for (int t = 0; t < (1000); t++)
    for (int i = 0; i < (n); i++)
      for (int j = 0; j < (n); j++)
        for (int k = 0; k < (n); k++)
          d[t + 1][i][j] = min(d[t + 1][i][j], d[t][i][k] + d[0][k][j]);
  while (q--) {
    int s, t, ch;
    scanf("%d%d%d", &s, &t, &ch);
    s--;
    t--;
    printf("%d\n", d[ch][s][t]);
  }
  return 0;
}
