#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
const int dim=1005;
int mn,nr;
int a[dim][dim],n,m,q,v[dim],vmn[dim][dim],vmx[dim][dim],vmnf[dim][dim],vmxf[dim][dim];
void calc(int x, int y){
mn=1e9,nr=0;
int lin=0,col=0;
deque<int> dqmin,dqmax;
for(int i=1;i<=n;i++){
int len=0;
col=0;
for(int j=1;j<=m;j++){
v[++len]=a[i][j];
}
dqmin.clear();
dqmax.clear();
for(int j=1;j<=len;j++){
while(!dqmin.empty() and v[j]<v[dqmin.back()]){
dqmin.pop_back();
}
dqmin.push_back(j);
if(dqmin.front()==j-x){
dqmin.pop_front();
}
if(j>=x){
vmn[i][++col]=v[dqmin.front()];
}
while(!dqmax.empty() and v[j]>v[dqmax.back()]){
dqmax.pop_back();
}
dqmax.push_back(j);
if(dqmax.front()==j-x){
dqmax.pop_front();
}
if(j>=x){
vmx[i][col]=v[dqmax.front()];
}
}
}
dqmax.clear();
dqmin.clear();
for(int j=1;j<=col;j++){
int len=0;
lin=0;
dqmin.clear();
dqmax.clear();
for(int i=1;i<=n;i++){
v[++len]=vmn[i][j];
}
for(int i=1;i<=n;i++){
while(!dqmin.empty() and v[i]<v[dqmin.back()]){
dqmin.pop_back();
}
dqmin.push_back(i);
if(dqmin.front()==i-y){
dqmin.pop_front();
}
if(i>=y){
vmnf[++lin][j]=v[dqmin.front()];
}
}
}
for(int j=1;j<=col;j++){
int len=0;
lin=0;
dqmin.clear();
dqmax.clear();
for(int i=1;i<=n;i++){
v[++len]=vmx[i][j];
}
for(int i=1;i<=n;i++){
while(!dqmax.empty() and v[i]>v[dqmax.back()]){
dqmax.pop_back();
}
dqmax.push_back(i);
if(dqmax.front()==i-y){
dqmax.pop_front();
}
if(i>=y){
vmxf[++lin][j]=v[dqmax.front()];
}
}
}
for(int i=1;i<=lin;i++){
for(int j=1;j<=col;j++){
if(mn>vmxf[i][j]-vmnf[i][j]){
mn=vmxf[i][j]-vmnf[i][j];
nr=1;
}
else
if(mn==vmxf[i][j]-vmnf[i][j]){
nr++;
}
}
}
}
int main(){
ifstream cin("struti.in");
ofstream cout("struti.out");
cin>>n>>m>>q;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
while(q--){
int x,y,m1,m2,n1,n2;
cin>>x>>y;
calc(x,y);
m1=mn;
n1=nr;
if(x!=y){
calc(y,x);
m2=mn;
n2=nr;
if(m1<m2){
cout<<m1<<' '<<n1;
}
else
if(m1>m2){
cout<<m2<<' '<<n2;
}
else{
cout<<m1<<' '<<n1+n2;
}
}
else{
cout<<m1<<' '<<n1;
}
cout<<endl;
}
return 0;
}