#include <iostream>
#include <fstream>
#define MAX 502
using namespace std;
long long n,m,v[12][MAX][MAX],x,y,k,e[MAX];
istream fin("plantatie.in");
ofstream fout("plantatie.out");
long long maxim(long long a, long long b, long long c, long long d){
long long ans = max(a, b);
ans = max(ans, c);
ans = max(ans, d);
return ans;
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
fin >> v[0][i][j];
}
}
/// precalculam vectorul e
e[1] = 0;
for(int i = 2; i <= n; i++){
e[i] = 1 + e[i/2];
}
/// precalculam vectorul v
for(int i = 1; (1<<i) <= n; i++){
/// patrat cu latura i
for(int j = 1; j <= n-(1<<i)+1; j++){
for(int k = 1; k <= n-(1<<i)+1; k++){
/// coltul in (j, k)
int j2 = j+(1<<(i-1));
int k2 = k+(1<<(i-1));
v[i][j][k] = maxim(v[i-1][j][k], v[i-1][j2][k], v[i-1][j][k2], v[i-1][j2][k2]);
}
}
}
for(int i = 1; i <= m; i++){
fin >> x >> y >> k;
int exp = e[k];
int len = (1<<exp);
int x2 = x+k-len;
int y2 = y+k-len;
fout << maxim(v[exp][x][y], v[exp][x2][y], v[exp][x][y2], v[exp][x2][y2]) << "\n";
}
return 0;
}