#include <bits/stdc++.h>
using namespace std;
ifstream fin("plantatie.in");
ofstream fout("plantatie.out");
int n,m;
int rmq[502][502][10];
void create()
{
int stop=log2(n);
for(int k=1; k<=stop; k++)
{
int r=n-(1<<k);
for(int i=0; i<=r; i++)
{
for(int j=0; j<=r; j++)
{
rmq[i][j][k]=max(rmq[i][j][k-1], rmq[i][j+(1<<(k-1))][k-1]);
int r2=max(rmq[i+(1<<(k-1))][j][k-1], rmq[i+(1<<(k-1))][j+(1<<(k-1))][k-1] );
rmq[i][j][k]=max(rmq[i][j][k],r2);
}
}
}
}
int query(int i, int j, int l)
{
int pi=i+l-1;
int pj=j+l-1;
int k=log2(l);
int r1=max(rmq[i][j][k], rmq[i][pj-(1<<k)][k]);
int r2=max(rmq[pi-(1<<k)][pj][k],rmq[pi-(1<<k)][pj-(1<<k)][k]);
return max(r1,r2);
}
int main()
{
fin>>n>>m;
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
fin>>rmq[i][j][0];
}
}
create();
int i,j,k;
for(;m>0; m--)
{
fin>>i>>j>>k;
fout<<query(i,j,k)<<"\n";
}
return 0;
}