long p[1024][1024][9];
long n,m,i,j,k,t,p2,f,x1,x2,k2,r;
{
fstream f("plan.in",ios::in),g("numere.out",ios::out);
readln(n,m);
for i:=1 to n do begin
for j:=1 to n do read(p[i,j,0]);
readln;
end;
for k:=1 to 9 do begin
f:=1 shl (k-1);
for i:=1 to n do
for j:=1 to n do begin
r:=p[i,j,k-1];x1:=i+f; x2:=j+f;k2:=k-1;
if p[i,x2,k2]>r then r:=p[i,x2,k2];
if p[x1,j,k2]>r then r:=p[x1,j,k2];
if p[x1,x2,k2]>r then r:=p[x1,x2,k2];
p[i,j,k]:=r;
end;
end;
for t:=1 to m do begin
readln(i,j,k); if (j+k-1)>n then k:=n-j+1;
p2:=trunc(ln(k)/ln(2)); f:=1 shl p2;
r:=p[i,j,p2];x1:=i+k-f; x2:=j+k-f;
if p[i,x2,p2]>r then r:=p[i,x2,p2];
if p[x1,j,p2]>r then r:=p[x1,j,p2];
if p[x1,x2,p2]>r then r:=p[x1,x2,p2];
writeln(r);
end;
close(input); close(output);
end.