#include <cstdio>
#include <deque>
#define INF 2000000000
using namespace std;
int a[1001][1001],maxi[1001][1001],mini[1001][1001];
deque <int> d,d2;
int apar,n,m,st;
void dmin (int l,int x){
int i;
for (i=1;i<x;i++){
while (d.size()!=0 && a[l][i]<a[l][d.back()])
d.pop_back();
d.push_back(i);
}
for (i=x;i<=m;i++){
if (i-d.front()+1>x)
d.pop_front();
while (d.size()!=0 && a[l][i]<a[l][d.back()])
d.pop_back();
d.push_back(i);
mini[l][i]=a[l][d.front()];
}
}
void dmax (int l,int x){
int i;
for (i=1;i<x;i++){
while (d.size()!=0 && a[l][i]>a[l][d.back()])
d.pop_back();
d.push_back(i);
}
for (i=x;i<=m;i++){
if (i-d.front()+1>x)
d.pop_front();
while (d.size()!=0 && a[l][i]>a[l][d.back()])
d.pop_back();
d.push_back(i);
maxi[l][i]=a[l][d.front()];
}
}
int calc (int c,int x){
int i,minn=INF; /// in d e maxim si in d2 e minim
for (i=1;i<x;i++){
while (d.size()!=0 && maxi[i][c]>maxi[d.back()][c])
d.pop_back();
d.push_back(i);
while (d2.size()!=0 && mini[i][c]<mini[d.back()][c])
d2.pop_back();
d2.push_back(i);
}
for (i=x;i<=n;i++){
if (i-d.front()+1>x)
d.pop_front();
while (d.size()!=0 && maxi[i][c]>maxi[d.back()][c])
d.pop_back();
d.push_back(i); /// modific deque ul cu maxime
if (i-d2.front()+1>x)
d2.pop_front();
while (d2.size()!=0 && mini[i][c]<mini[d2.back()][c])
d2.pop_back();
d2.push_back(i); /// modific deque ul cu minime
if (maxi[d.front()][c]-mini[d2.front()][c]==minn)
st++;
else if (maxi[d.front()][c]-mini[d2.front()][c]<minn){
minn=maxi[d.front()][c]-mini[d2.front()][c];
st=1;
}
//printf ("%d %d\n",d.front(),d2.front());
}
//printf ("\n\n");
return minn;
}
int solve (int x,int y){
int i,j,sol=INF,nr;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++){
maxi[i][j]=0;
mini[i][j]=INF;
}
for (i=1;i<=n;i++){
d.clear ();
dmin(i,y);
d.clear();
dmax(i,y);
}
for (i=y;i<=m;i++){
st=0;
d.clear();
d2.clear();
nr=calc(i,x);
if (nr==sol)
apar+=st;
else if (nr<sol){
sol=nr;
apar=st;
}
}
return sol;
}
int main()
{
FILE *fin=fopen ("struti.in","r");
FILE *fout=fopen ("struti.out","w");
int k,i,j,x,y,s1,s2,ok1,ok2;
fscanf (fin,"%d%d%d",&n,&m,&k);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
fscanf (fin,"%d",&a[i][j]);
for (;k;k--){
fscanf (fin,"%d%d",&x,&y);
apar=0;
s1=solve(x,y);
ok1=apar;
apar=0;
s2=solve(y,x);
ok2=apar;
if (x==y)
fprintf (fout,"%d %d\n",s1,ok1);
else{
if (s2<s1)
fprintf (fout,"%d %d\n",s2,ok2);
else if (s1<s2)
fprintf (fout,"%d %d\n",s1,ok1);
else fprintf (fout,"%d %d\n",s1,ok1+ok2);
}
}
return 0;
}