program strutii;
var f,g:text;
a:array[1..1000,1..1000] of integer;
d,e:array[1..1000] of integer;
m,n,dx,dy,i,j,minim,k,p,nr,nrmin,q,li,lf,l1,l2,x:longint;
function min(u,v:integer):integer;
var z,w:integer;
begin
z:=8001;
for w:=0 to dx-1 do
if a[u+w,v]<z then z:=a[u+w,v];
min:=z
end;
function max(u,v:integer):integer;
var z,w:integer;
begin
z:=-1;
for w:=0 to dx-1 do
if a[u+w,v]>z then z:=a[u+w,v];
max:=z
end;
begin
assign(f,'struti.in');
assign(g,'struti.out');
rewrite(g);
reset(f);
readln(f,m,n,p);
for i:=1 to m do
begin
for j:=1 to n do read(f,a[i,j]);
readln(f)
end;
for k:=1 to p do
begin
readln(f,dx,dy);
nrmin:=0;
minim:=8001;
for i:=1 to m-dx+1 do
begin
li:=1;lf:=0;l1:=1;l2:=0;
for j:=1 to n do
begin
while (li<=lf)and(min(i,j)<=min(i,d[lf])) do lf:=lf-1;
while (l1<=l2)and(max(i,j)>=max(i,e[l2])) do l2:=l2-1;
lf:=lf+1;l2:=l2+1;
d[lf]:=j;e[l2]:=j;
if d[li]=j-dy then li:=li+1;
if e[l1]=j-dy then l1:=l1+1;
x:=max(i,e[l1])-min(i,d[li]);
if j>=dy then if x<minim then begin
minim:=x;
nrmin:=1
end
else if x=minim then nrmin:=nrmin+1;
end;
end;
if dx<>dy then
begin
q:=dx;dx:=dy;dy:=q;
for i:=1 to m-dx+1 do
begin
li:=1;lf:=0;l1:=1;l2:=0;
for j:=1 to n do
begin
while (li<=lf)and(min(i,j)<=min(i,d[lf])) do lf:=lf-1;
while (l1<=l2)and(max(i,j)>=max(i,e[l2])) do l2:=l2-1;
lf:=lf+1;l2:=l2+1;
d[lf]:=j;e[l2]:=j;
if d[li]=j-dy then li:=li+1;
if e[l1]=j-dy then l1:=l1+1;
x:=max(i,e[l1])-min(i,d[li]);
if j>=dy then if x<minim then begin
minim:=x;
nrmin:=1
end
else if x=minim then nrmin:=nrmin+1;
end;
end;
end;
writeln(g,minim,' ',nrmin);
end;
close(f);
close(g);
end.