#include <stdio.h>
inline void init( short d[], short &dl, short &dr, short poz[] ) { dl = 0; dr = -1; }
inline void addmax( short d[], short &dl, short &dr, short p[], short val, short poz, short L )
{
while (dr >= dl && d[dr] <= val) dr--;
if (dl <= dr && poz - p[dl] >= L) dl++;
d[++dr] = val;
p[dr] = poz;
}
inline void addmin( short d[], short &dl, short &dr, short p[], short val, short poz, short L )
{
while (dr >= dl && d[dr] >= val) dr--;
if (dl <= dr && poz - p[dl] >= L) dl++;
d[++dr] = val;
p[dr] = poz;
}
inline short top( short d[], short dl ) { return d[dl]; }
#define MAXN 1005
int M, N, P;
short x[MAXN][MAXN];
short hd[2][MAXN][MAXN], hdl[2][MAXN], hdr[2][MAXN], hdp[2][MAXN][MAXN]; //horizontal deques
short vd[2][MAXN], vdl[2], vdr[2], vdp[2][MAXN]; //vertical deques
inline void query( int a, int b, int &MIN, int &MINnr )
{
int i, j;
MIN = 0x3f3f3f3f; MINnr = 0;
for (i = 0; i < N; i++)
{
init( hd[0][i], hdl[0][i], hdr[0][i], hdp[0][i] );
init( hd[1][i], hdl[1][i], hdr[1][i], hdp[1][i] );
}
for (i = 0; i < N; i++)
for (j = 0; j < b - 1; j++)
{
addmax( hd[0][i], hdl[0][i], hdr[0][i], hdp[0][i], x[i][j], j, b );
addmin( hd[1][i], hdl[1][i], hdr[1][i], hdp[1][i], x[i][j], j, b );
}
for (j = b - 1; j < M; j++)
{
init( vd[0], vdl[0], vdr[0], vdp[0] );
init( vd[1], vdl[1], vdr[1], vdp[1] );
for (i = 0; i < N; i++)
{
addmax( hd[0][i], hdl[0][i], hdr[0][i], hdp[0][i], x[i][j], j, b );
addmin( hd[1][i], hdl[1][i], hdr[1][i], hdp[1][i], x[i][j], j, b );
addmax( vd[0], vdl[0], vdr[0], vdp[0], top( hd[0][i], hdl[0][i] ), i, a );
addmin( vd[1], vdl[1], vdr[1], vdp[1], top( hd[1][i], hdl[1][i] ), i, a );
if (i >= a - 1)
{
int val = top(vd[0], vdl[0]) - top(vd[1], vdl[1]);
if (val < MIN)
{
MIN = val;
MINnr = 1;
}
else
if (val == MIN)
MINnr++;
}
}
}
}
char tmp[MAXN * 5];
int main()
{
freopen("struti.in", "rt", stdin);
freopen("struti.out", "wt", stdout);
scanf(" %d %d %d ", &N, &M, &P);
int i, j;
for (i = 0; i < N; i++)
{
fgets(tmp, MAXN * 5, stdin);
char *p = tmp;
for (j = 0; j < M; j++)
{
for (; '0' > *p || *p > '9'; p++);
short k = 0;
for (; '0' <= *p && *p <= '9'; p++)
k = k * 10 + *p - '0';
x[i][j] = k;
}
}
for (i = 0; i < P; i++)
{
int a, b, MIN, MINnr, MIN2, MINnr2;
scanf("%d %d", &a, &b);
if (a == b)
query(a, b, MIN, MINnr);
else
{
query(a, b, MIN, MINnr);
query(b, a, MIN2, MINnr2);
if (MIN == MIN2)
MINnr += MINnr2;
else
if (MIN > MIN2)
{
MIN = MIN2;
MINnr = MINnr2;
}
}
printf("%d %d\n", MIN, MINnr);
}
return 0;
}