#include <stdio.h>
#define fin "struti.in"
#define fout "struti.out"
#define Nmax 1001
#define INFI 8001
int N,M,X,Y,P,best,cnt,map[Nmax][Nmax];
int dq1[Nmax][2][Nmax],dql1[2][Nmax],p1[2][Nmax]; //min 0 - prim 1 - varf
int dq2[Nmax][2][Nmax],dql2[2][Nmax],p2[2][Nmax]; //max
int pr1,vf1,pr2,vf2;
inline void el(int deq[Nmax],int &pr,int &vf,int A,int p) {
if ( deq[pr] <= p - A )
++pr;
}
inline void ins1(int deq[Nmax],int &pr,int &vf,int val,int poz) {
while ( val < deq[vf] && vf >= pr )
--vf;
++vf;
deq[vf]=val; deq[vf]=poz;
}
inline void ins2(int deq[Nmax],int &pr,int &vf,int val,int poz) {
while ( val > deq[vf] && vf >= pr )
--vf;
++vf;
deq[vf]=val; deq[vf]=poz;
}
inline void init1(int &pr,int &vf,int &val,int &poz) {
pr=1; vf=1;
val=INFI; poz=0;
}
inline void init2(int &pr,int &vf,int &val,int &poz) {
pr=1; vf=1;
val=-1; poz=0;
}
void go(int X,int Y) {
int i,j,min,max,dif;
init1(pr1,vf1,dql1[0][1],dql1[1][1]);
init2(pr2,vf2,dql2[0][1],dql2[1][1]);
for (i=1;i<=M;++i) {
init1(p1[0][i],p1[1][i],dq1[i][0][1],dq1[i][1][1]);
init2(p2[0][i],p2[1][i],dq2[i][0][1],dq2[i][1][1]);
}
for (i=1;i<=N;++i)
for (j=1;j<=M;++j) {
if ( j==1 ) {
init1(pr1,vf1,dql1[0][1],dql1[1][1]);
init2(pr2,vf2,dql2[0][1],dql2[1][1]);
}
el(dq1[j][0],p1[j][0],p1[j][1],Y,i);
el(dq2[j][1],p2[j][0],p2[j][1],Y,i);
el(dql1[0],pr1,vf1,X,j);
el(dql2[1],pr2,vf2,X,j);
ins1(dq1[j][0],p1[j][0],p1[j][1],map[i][j],i);
ins2(dq2[j][1],p2[j][0],p2[j][1],map[i][j],i);
min=dq1[j][p1[j][0]][0]; //imi iau minimul de pe coloana j
max=dq2[j][p2[j][0]][0]; //si maximul
ins1(dql1[0],pr1,vf1,min,j);
ins2(dql2[1],pr2,vf2,max,j);
dif=dql2[0][pr2]-dql1[0][pr1];
if (j>=X && i>=Y) {
if ( dif < best ) {
best=dif;
cnt=0;
}
if (dif==best)
++cnt;
}
}
}
int main() {
int i,j;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
int poz=0;
unsigned max, sol = 0;
#define dim 10000
char buf[dim];
fread(buf,1,dim,stdin);
#define cit(x) \
{ \
x = 0; \
while(buf[poz] < '0') \
{ \
++poz; \
if(poz == dim) \
fread(buf,1,dim,stdin), poz = 0; \
} \
while(buf[poz] >= '0') \
{ \
x = x*10 + buf[poz] - '0'; \
if(++poz == dim) \
fread(buf,1,dim,stdin), poz = 0; \
} \
}
//scanf("%d%d%d",&N,&M,&P);
cit(N) cit(M) cit(P)
for (i=1;i<=N;++i)
for (j=1;j<=M;++j)
//scanf("%d",&map[i][j]);
cit(map[i][j])
for (;P>0;--P) {
//scanf("%d%d",&X,&Y);
cit(X) cit(Y)
best=INFI; cnt=0;
go(X,Y);
if (X!=Y) go(Y,X);
printf("%d %d\n",best,cnt);
}
return 0;
}