#include <stdio.h>
#include <deque>
#define Nmax 1002
#define INF 2147000000
using namespace std;
deque< int > max_deq[Nmax],min_deq[Nmax],deqM,deqm;
int A[Nmax][Nmax];
int N,M,T,min_val,nr;
inline int Minim(int x,int y){ return x<y ? x:y;}
inline void adaug_max(deque< int >& deq,int i,int j){
while( !deq.empty() && A[deq.back()][j] < A[i][j] )
deq.pop_back();
deq.push_back(i);
}
inline void adaug_min(deque< int >& deq,int i,int j){
while( !deq.empty() && A[deq.back()][j] > A[i][j] )
deq.pop_back();
deq.push_back(i);
}
inline void adaug_max2(deque< int >& deq,int j){
while( !deq.empty()
&& A[max_deq[deq.back()].front()][deq.back()] < A[max_deq[j].front()][j] )
deq.pop_back();
deq.push_back(j);
}
inline void adaug_min2(deque< int >& deq,int j){
while( !deq.empty()
&& A[min_deq[deq.back()].front()][deq.back()] > A[min_deq[j].front()][j] )
deq.pop_back();
deq.push_back(j);
}
inline void pop(deque< int >& deq,int d,int lim){
while( !deq.empty() && deq.front()+d-1 < lim )
deq.pop_front();
}
void solve(int dx,int dy){
int i,j;
//initialiez
for(j=1;j<=M;++j){
while(!min_deq[j].empty()) min_deq[j].pop_back();
while(!max_deq[j].empty()) max_deq[j].pop_back();
}
for(i=1;i<dx;++i)
for(j=1;j<=M;++j){
adaug_max(max_deq[j],i,j);
adaug_min(min_deq[j],i,j);
}
for(i=dx;i<=N;++i){
for(j=1;j<=M;++j){
// adaug la sf deq
adaug_max(max_deq[j],i,j);
adaug_min(min_deq[j],i,j);
// scot din fata
pop(max_deq[j],dx,i);
pop(min_deq[j],dx,i);
}
//initializez
while( !deqM.empty() ) deqM.pop_back();
while( !deqm.empty() ) deqm.pop_back();
for(j=1;j<dy;++j){
adaug_max2(deqM,j);
adaug_min2(deqm,j);
}
for(j=dy;j<=M;++j){
// adaug la sf deq
adaug_max2(deqM,j);
adaug_min2(deqm,j);
// scot din fata
pop(deqM,dy,j);
pop(deqm,dy,j);
if( A[max_deq[deqM.front()].front()][deqM.front()]-
A[min_deq[deqm.front()].front()][deqm.front()] < min_val )
{
min_val=A[max_deq[deqM.front()].front()][deqM.front()]-
A[min_deq[deqm.front()].front()][deqm.front()];
nr=1;
}else
if(A[max_deq[deqM.front()].front()][deqM.front()]-
A[min_deq[deqm.front()].front()][deqm.front()] == min_val )
nr++;
}
}
}
int main(){
int dx,dy,i,j;
freopen("struti.in","r",stdin);
freopen("struti.out","w",stdout);
scanf("%d%d%d",&N,&M,&T);
for(i=1;i<=N;++i)
for(j=1;j<=M;++j) scanf("%d",&A[i][j]);
for(; T; --T){
scanf("%d%d",&dx,&dy);
min_val=INF; nr=0;
solve(dx,dy);
if( dx!=dy ) solve(dy,dx);
printf("%d %d\n",min_val,nr);
}
fclose(stdin); fclose(stdout);
return 0;
}