{$IFDEF NORMAL}
{$I-,Q-,R-,S-}
{$ENDIF NORMAL}
{$IFDEF DEBUG}
{$I+,Q+,R+,S-}
{$ENDIF DEBUG}
{$IFDEF RELEASE}
{$I-,Q-,R-,S-}
{$ENDIF RELEASE}
type optim = array[1..500,1..500,0..9] of longint;
var fi,fo:text;
i,j,n,k,ii,jj,p,pw:integer;
m:longint;
opt:optim;
function maxim(a,b,c,d:longint):longint;
var max:longint;
begin
max:=-1000;
if a>max then max:=a;
if b>max then max:=b;
if c>max then max:=c;
if d>max then max:=d;
maxim:=max;
end;
procedure gosolve;
var pw:integer;
begin
pw:=1;
for k:=1 to 8 do
begin
for i:=1 to n do
for j:=1 to n do
begin
if (i+2*pw<=n+1) and (j+pw*2<=n+1) then
opt[i,j,k]:=maxim(opt[i,j,k-1],opt[i,j+pw,k-1],opt[i+pw,j,k-1],opt[i+pw,j+pw,k-1])
else continue;
writeln(fo,i,' ',j,' ',k,' ',opt[i,j,k],' ',pw);
flush(fo);
end;
pw:=pw*2;
end;
end;
begin
assign(fi,'plantatie.in'); reset(fi);
assign(fo,'plantatie.out'); rewrite(fo);
readln(fi,n,m);
for i:=1 to n do
for j:=1 to n do
read(fi,opt[i,j,0]);
gosolve;
for ii:=1 to m do
begin
readln(fi,i,j,k);
pw:=1;
for jj:=1 to 9 do
begin
pw:=pw*2;
if pw>k then break;
end;
p:=jj-1;
pw:=pw div 2;
writeln(fo,maxim(opt[i,j,p],opt[i,j+k-pw,p],opt[i+k-pw,j,p],opt[i+k-pw,j+k-pw,p]));
end;
//writeln(fo,opt[7,5,2]);
close(fo);
end.