#include<cstdio>
#define max(a,b) a<b?b:a
#define MAX(a,b,c,d) (max(a,b))<(max(c,d))?(max(c,d)):(max(a,b))
using namespace std;
int V[501][501][10],lg[1000],i,j,k,n,m,I,J,L,LG;
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&V[i][j][0]);
lg[1]=0;
for(i=2;i<=500;i++)
lg[i]=lg[i>>2]+1;
}
void solve()
{
for(k=1;(1<<k)<=500;k++)
for(i=1;i+(1<<k)-1<=500;i++)
for(j=1;j+(1<<k)-1<=500;j++)
{
L=(1<<(k-1));
V[i][j][k]=MAX(V[i][j][k-1],V[i][j+L][k-1],V[i+L][j][k-1],V[i+L][j+L][k-1]);
}
for(;m;m--)
{
scanf("%d%d%d",&i,&j,&k);
LG=lg[k];
L=(1<<LG);
I=i+k;J=j+k;
printf("%d\n",MAX(V[i][j][LG],V[I-L][j][LG],V[i][J-L][LG],V[I-L][J-L][LG]) );
}
}