#include<stdio.h>
#include<stdlib.h>
#include<deque>
using namespace std;
#define MAXN 1001
int minim, nr;
deque <int> d1;
deque <int> d2;
deque <int> poz1;
deque <int> poz2;
int v[MAXN][MAXN], matmin[MAXN][MAXN], matmax[MAXN][MAXN];
int matdq(int n, int m, int k){
int j, i, a;
for(j=1; j<=m; j++){
for(i=1; i<=n; i++){
//pt min
// printf("DA");
if(!d1.empty() && i-poz1.front()>=k){
d1.pop_front();
poz1.pop_front();
}
a=v[i][j];
while(!d1.empty() && a<=d1.back()){
d1.pop_back();
poz1.pop_back();
}
d1.push_back(a);
poz1.push_back(i);
//pt d2 poz 2
if(!d2.empty() && i-poz2.front()>=k){
d2.pop_front();
poz2.pop_front();
}
while(!d2.empty() && a>=d2.back()){
d2.pop_back();
poz2.pop_back();
}
d2.push_back(a);
poz2.push_back(i);
if(i>=k){
matmin[i][j]=d1.front();
matmax[i][j]=d2.front();
}
}
while(!d1.empty()){
d1.pop_back();
poz1.pop_back();
}
while(!d2.empty()){
d2.pop_back();
poz2.pop_back();
}
}
}
int solve(int n, int m, int x, int y){
int i, j, a, k;
k=y;
for(i=x; i<=n; i++){
for(j=1; j<=m; j++){
if(!d1.empty() && j-poz1.front()>=k){
d1.pop_front();
poz1.pop_front();
}
a=matmin[i][j];
while(!d1.empty() && a<=d1.back()){
d1.pop_back();
poz1.pop_back();
}
d1.push_back(a);
poz1.push_back(j);
//pt d2 poz 2
a=matmax[i][j];
if(!d2.empty() && j-poz2.front()>=k){
d2.pop_front();
poz2.pop_front();
}
while(!d2.empty() && a>=d2.back()){
d2.pop_back();
poz2.pop_back();
}
d2.push_back(a);
poz2.push_back(j);
// printf("%d %d %d %d\n", i, j, d1.front(), d2.front());
if(j>=k){
// printf("%d %d %d %d\n", i, j, d1.front(), d2.front());
if(d2.front()-d1.front()<minim){
minim=d2.front()-d1.front();
nr=1;
}
else
if(d2.front()-d1.front()==minim)
nr++;
}
}
while(!d1.empty()){
d1.pop_back();
poz1.pop_back();
}
while(!d2.empty()){
d2.pop_back();
poz2.pop_back();
}
}
}
int main(){
FILE*fin=fopen("struti.in", "r");
FILE*fout=fopen("struti.out", "w");
int n, m, x, y, i, j, k, p;
fscanf(fin, "%d%d%d", &n, &m, &p);
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
fscanf(fin, "%d", &v[i][j]);
// matdq(n, m, 2);
// solve(n, m, 2, 2);
// for(i=1; i<=n; i++){
// for(j=1; j<=m; j++)
// printf("%d", matmax[i][j]);
// printf("\n");
// }
for(k=1; k<=p; k++){
fscanf(fin, "%d%d", &x, &y);
minim=100000000;
nr=0;
matdq(n, m, x);
solve(n, m, x, y);
if(x!=y){
matdq(n, m, y);
solve(n, m, y, x);
}
fprintf(fout, "%d %d\n", minim, nr);
}
fclose(fin);
fclose(fout);
return 0;
}