#include <fstream>
#define DIM 501
using namespace std;
ifstream fin ("plantatie.in");
ofstream fout ("plantatie.out");
int n,q,i,j,k,nr,x,val,l[DIM],d[DIM][DIM][11];
int main (){
fin>>n>>q;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
fin>>d[i][j][0];
/// facem rmq 2d k
/// d[k][i][j]-maximul din patratul care se termina in i,j si de lungime 2
//p[0] = 1;
//for (i=1;p[i-1]*2<=n;i++)
// p[i] = p[i-1] * 2;
for (i=2;i<=n;i++)
l[i] = l[i/2] + 1;
for (k=1;(1<<k)<=n;k++){
x = (1<< (k-1) );
for (i=(1<<k);i<=n;i++)
for (j=(1<<k);j<=n;j++){
d[i][j][k] = max (d[i][j][k-1],d[i][j-x][k-1]);
d[i][j][k] = max (d[i][j][k],d[i-x][j][k-1]);
d[i][j][k] = max (d[i][j][k],d[i-x][j-x][k-1]);
}
}
for (;q--;){
fin>>i>>j>>k;
val = l[k];
x = (1<<val);
nr = max (d[i+x-1][j+x-1][val],d[i+x-1][j+k-1][val]);
nr = max (nr,d[i+k-1][j+x-1][val]);
nr = max (nr,d[i+k-1][j+k-1][val]);
fout<<nr<<"\n";
}
return 0;
}