#include <bits/stdc++.h>
#define MAXN 500
#define MAX_LOG 9
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int mat[MAXN + 1][MAXN + 1], log_2[MAXN + 1], rmq[MAX_LOG + 1][MAXN + 1][MAXN + 1];
int max4(int a, int b, int c, int d) {
return max(a, max(b, max(c, d)));
}
int main() {
int n, m, e, i, j, k, p, rez;
fin >> n >> m;
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
fin >> mat[i][j];
}
}
log_2[1] = 0;
for (i = 2; i <= n; i++) {
log_2[i] = log_2[i / 2] + 1;
}
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
rmq[0][i][j] = mat[i][j];
}
}
for (e = 1; e <= log_2[n]; e++) {
p = (1 << (e - 1));
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
rmq[e][i][j] = max4(rmq[e - 1][i][j], rmq[e - 1][i][j - p], rmq[e - 1][i - p][j], rmq[e - 1][i - p][j - p]);
}
}
}
while (m--) {
fin >> i >> j >> k;
i = i + k - 1;
j = j + k - 1;
e = log_2[k];
p = (1 << e);
rez = max4(rmq[e][i - k + p][j - k + p], rmq[e][i - k + p][j], rmq[e][i][j - k + p], rmq[e][i][j]);
fout << rez << '\n';
}
return 0;
}