#include<stdio.h>
using namespace std;
FILE *f,*g;
int deck[1001],begin,end,v[2][1001][1001],MIN,NR,n,m,p,maxim[1001][1001],minim[1001][1001];
void pushback(int a){
deck[end++]=a;
}
void popback(void){
if (end>begin) end--;
}
void popfront(void){
if (end>begin) begin++;
}
bool empty(void){
if (begin==end) return 1;
return 0;
}
int front(void){
return deck[begin];
}
bool bigga(int a,int b){
return (a>b);
}
bool smolla(int a,int b){
return (a<b);
}
void add(int unde,bool q,int a,int b,bool cmp(int x, int y)){
while ( !empty() && cmp(deck[end-1],v[unde][a][b]) ) popback();
if (q) pushback(b);
else pushback(a);
}
int uberadd(bool q,int unde,int a,int b,int lim,bool cmp(int a,int b)){
int r=front();
if (!q) {if (r==a-lim) popfront();}
else {if (r==b-lim) popfront();}
add(q,unde,a,b,cmp);
return r;
}
void clear(void){
begin=end=0;
}
void initialize(bool q,int unde,int a,int b, bool cmp(int a, int b)){
int i;
clear();if (!q){
for(i=1;i<=a;i++) add(q,unde,i,b,cmp);}
else for(i=1;i<=b;i++) add(q,unde,a,i,cmp);
}
void create (int dx,int dy,bool cmp(int a,int b)){
int i,j,q;
for(i=1;i<=m;i++){
initialize(0,0,dx,i,cmp);
for(j=dx+1;j<=n;j++){
q=uberadd(0,0,j,i,dx,cmp);
v[1][j-dx][i]=v[0][q][i];
}
v[1][n-dx+1][i]=v[0][front()][i];
}
for(i=1;i<=n-dx+1;i++){
initialize(1,1,i,dy,cmp);
if (cmp(1,2)){
for(j=dy+1;j<=m;j++){
q=uberadd(1,1,i,j,dy,cmp);
minim[i][j-dy]=v[1][i][q];
}
minim[i][m-dy+1]=v[1][i][front()];
}
else{
for(j=dy+1;j<=m;j++){
q=uberadd(1,1,i,j,dy,cmp);
maxim[i][j-dy]=v[1][i][q];
}
maxim[i][m-dy+1]=v[1][i][front()];
}
}
}
void afla(int dx,int dy){
create(dx,dy,bigga);
create(dx,dy,smolla);
MIN=10000;
NR=0;
int i,j;
for(i=1;i<=n-dx+1;i++)
for(j=1;j<=m-dy+1;j++)
if (maxim[i][j]-minim[i][j]<MIN) {MIN=maxim[i][j]-minim[i][j];NR=1;}
else if (maxim[i][j]-minim[i][j]==MIN) NR++;
create(dy,dx,bigga);
create(dy,dx,smolla);
for(i=1;i<=n-dy+1;i++)
for(j=1;j<=m-dx+1;j++)
if (maxim[i][j]-minim[i][j]<MIN) {MIN=maxim[i][j]-minim[i][j];NR=1;}
else if (maxim[i][j]-minim[i][j]==MIN) NR++;
}
void read(void){
f=fopen("struti.in","r");
g=fopen("struti.out","w");
fscanf(f,"%d%d%d",&n,&m,&p);
int i,j,dx,dy;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(f,"%d",&v[0][i][j]);
for(i=1;i<=p;i++){
fscanf(f,"%d%d",&dx,&dy);
afla(dx,dy);
fprintf(g,"%d %d\n",MIN,NR);
}
}
int main(void){
read();
return 0;
}