#include<stdio.h>
#include<string.h>
#define INF 1<<30
int aux,min,nr,D[1011],P,u,i,dx,dy,t,p,n,m,c[1011][1011],a[1011][1011],A[1011][1011],B[1011][1011],C[1011][1011],j;
void dmin(){
for(i=1;i<=m;i++){
p=1;u=0;
memset(D,0,sizeof(D));
for(j=1;j<=n;j++){
while(D[p] <= j-dx && p<=u) p++;
while(p<=u && a[D[u]][i] >= a[j][i]) u--;
u++; D[u] = j;
if(j>=dx)
A[j][i]= a[D[p]][i];
}
}
}
void dmax(){
for(i=1;i<=m;i++){
p=1;u=0;
memset(D,0,sizeof(D));
for(j=1;j<=n;j++){
while(D[p] <= j-dx && p<=u) p++;
while(p<=u && a[D[u]][i] <= a[j][i]) u--;
u++; D[u] = j;
if(j>=dx)
A[j][i]= a[D[p]][i];
}
}
}
void d2min(){
for(i=dx;i<=n;i++){
p=1;u=0;
memset(D,0,sizeof(D));
for(j=1;j<=m;j++){
while(D[p] <= j-dy && p<=u) p++;
while(p<=u && A[i][D[u]] >= A[i][j]) u--;
u++; D[u] = j;
if(j>=dy)
B[i][j]= A[i][D[p]];
}
}
}
void d2max(){
for(i=dx;i<=n;i++){
p=1;u=0;
memset(D,0,sizeof(D));
for(j=1;j<=m;j++){
while(D[p] <= j-dy && p<=u)
p++;
while(p<=u && A[i][D[u]] <= A[i][j])
u--;
u++;
D[u] = j;
if(j>=dy)
C[i][j]= A[i][D[p]];
}
}
}
int main(){
FILE *f=fopen("struti.in","r");
FILE *g=fopen("struti.out","w");
fscanf(f,"%d %d %d",&n,&m,&P);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(f,"%d",&a[i][j]);
for(t=1;t<=P;t++){
fscanf(f,"%d %d",&dx,&dy);
dmin();
d2min();
//treb sa shterg A;
for(i=dx;i<=n;i++)
memset(A[i],0,sizeof(A[i]));
//ramane in B;
dmax();
d2max();
//ramane in C
min=INF;
nr=0;
for(i=dx;i<=n;i++)
for(j=dy;j<=m;j++){
c[i][j]=C[i][j] - B[i][j];
if(c[i][j] == min)
nr++;
if(c[i][j]<min){
min=c[i][j];
nr=1;
}
B[i][j]=A[i][j]=C[i][j]=0;
}
/////////////////////////////////////////////////////////////////////////////////
if(dx!=dy){
aux=dx;
dx=dy;
dy=aux;
dmin();
d2min();
//treb sa shterg A;
for(i=dx;i<=n;i++)
memset(A[i],0,sizeof(A[i]));
//ramane in B;
dmax();
d2max();
//ramane in C
for(i=dx;i<=n;i++)
for(j=dy;j<=m;j++){
c[i][j]=C[i][j] - B[i][j];
if(c[i][j] == min)
nr++;
if(c[i][j]<min){
min=c[i][j];
nr=1;
}
B[i][j]=A[i][j]=C[i][j]=0;
}
}
fprintf(g,"%d %d\n",min,nr);
}
fclose(f);
fclose(g);
return 0;
}