#include <fstream>
#include <cstring>
#define NMAX 1001
using namespace std;
int dqmin[NMAX], dqmax[NMAX], mat[NMAX + 1][NMAX + 1];
int minim[NMAX + 1][NMAX + 1], maxim[NMAX + 1][NMAX + 1], h[NMAX + 1][NMAX + 1];
int n, m, diferenta, aparitii;
void add_deque( int dq[], int &dr, int st, int x, int i, int j, bool condition ) {
while( dr >= st && (x > mat[i][dq[dr]]) == condition )
dr --;
dq[++dr] = j;
}
void popfront_deque( int dq[], int &st, int j, int k ) {
if( j - dq[st] == k - 1 )
st ++;
}
void solve( int p, int q ) {
int i, j;
memset(minim,0,sizeof(minim));
memset(maxim,0,sizeof(maxim));
for( i = 1; i <= n; i ++ ) {
int stmin = 0;
int stmax = 0;
int drmin = -1;
int drmax = -1;
for( j = 1; j <= q - 1; j ++ ) {
add_deque(dqmin,drmin,stmin,mat[i][j],i,j,false);
minim[i][j] = mat[i][dqmin[stmin]];
add_deque(dqmax,drmax,stmax,mat[i][j],i,j,true);
maxim[i][j] = mat[i][dqmax[stmax]];
}
for( j = q; j <= m; j ++ ) {
add_deque(dqmin,drmin,stmin,mat[i][j],i,j,false);
minim[i][j] = mat[i][dqmin[stmin]];
popfront_deque(dqmin,stmin,j,q);
add_deque(dqmax,drmax,stmax,mat[i][j],i,j,true);
maxim[i][j] = mat[i][dqmax[stmax]];
popfront_deque(dqmax,stmax,j,q);
}
}
memset(h,0,sizeof(h));
for( j = 1; j <= m; j ++ ) {
int stmin = 0;
int stmax = 0;
int drmin = -1;
int drmax = -1;
for( i = 1; i <= p - 1; i ++ ) {
while( drmin >= stmin && minim[i][j] < minim[dqmin[drmin]][j] )
drmin --;
dqmin[++drmin] = i;
h[i][j] -= minim[dqmin[stmin]][j];
while( drmax >= stmax && maxim[i][j] > maxim[dqmax[drmax]][j] )
drmax --;
dqmax[++drmax] = i;
h[i][j] += maxim[dqmax[stmax]][j];
}
for( i = p; i <= n; i ++ ) {
while( drmin >= stmin && minim[i][j] < minim[dqmin[drmin]][j] )
drmin --;
dqmin[++drmin] = i;
h[i][j] -= minim[dqmin[stmin]][j];
if( i - dqmin[stmin] == p - 1 )
stmin ++;
while( drmax >= stmax && maxim[i][j] > maxim[dqmax[drmax]][j] )
drmax --;
dqmax[++drmax] = i;
h[i][j] += maxim[dqmax[stmax]][j];
if( i - dqmax[stmax] == p - 1 )
stmax ++;
}
}
for( i = p; i <= n; i ++ )
for( j = q; j <= m; j ++ ) {
if( h[i][j] == diferenta )
aparitii ++;
else if( h[i][j] < diferenta )
diferenta = h[i][j], aparitii ++;
}
}
int main() {
ifstream fin("struti.in");
ofstream fout("struti.out");
int k, p, q, i, j;
fin>>n>>m>>k;
for( i = 1; i <= n; i ++ )
for( j = 1; j <= m; j ++ )
fin>>mat[i][j];
while( k ) {
fin>>p>>q;
diferenta = 8 * NMAX;
aparitii = 0;
solve(p,q);
if( p != q )
solve(q,p);
fout<<diferenta<<" "<<aparitii<<"\n";
k --;
}
return 0;
}