#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();
for(i=dx; i<=n; i++)
memset(A[i],0,sizeof(A[i]));
dmax();
d2max();
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();
for(i=dx; i<=n; i++)
memset(A[i],0,sizeof(A[i]));
dmax();
d2max();
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;
}