#include<stdio.h>
#include<deque>
#define NMAX 1024
#define MOD 666013
using namespace std;
int N,M,T,A1,B,L,ANS,cnt;
short int A[NMAX][NMAX],M1[NMAX][NMAX],M2[NMAX][NMAX];
short int P1[NMAX],D1[NMAX];
short int P2[NMAX],D2[NMAX];
char sir[ 10000 ];
int i1,s1,i2,s2;
void reading()
{
int i,j;
scanf("%d%d%d\n",&N,&M,&T);
int aux,it;char ch;
for(i=1; i<=N; ++i)
{
fgets( sir, sizeof( sir ), stdin );
aux=0;j=1;
for(it=0; sir[ it ]!='\n' && sir[ it ]!=NULL; ++it )
{
if( sir[ it ]==' ' )
{
A[i][j]=aux; ++j; aux=0;
}
else
{
aux*=10;
aux+=sir[it]-'0';
}
}
A[i][j]=aux;
}
}
void put_D1( const int val,const int pos )
{
if( !s1 || D1[i1]<=val )
D1[i1=s1=1]=val,P1[i1]=pos;
else
{
int it;
for(it=i1+1; it<=s1; ++it)
if( D1[ it ]<=val )
{
D1[ it ]=val,s1=it,P1[it]=pos;
return;
}
D1[ ++s1 ]=val;P1[s1]=pos;
}
}
void put_D2( const int val,const int pos )
{
if( !s2 || D2[i2]>=val )
D2[i2=s2=1]=val,P2[i2]=pos;
else
{
int it;
for(it=i2+1; it<=s2; ++it)
if( D2[ it ]>=val )
{
D2[ it ]=val,s2=it,P2[it]=pos;
return;
}
D2[ ++s2 ]=val;P2[s2]=pos;
}
}
inline int find_max( const int pos )
{
while( P1[ i1 ]<pos && i1<=s1 )
++i1;
return D1[i1];
}
inline int find_min( const int pos )
{
while( P2[ i2 ]<pos && i2<=s2 )
++i2;
return D2[i2];
}
inline int min(const int a,const int b)
{
return a<b?a:b;
}
void solve()
{
int i,j,val;
for(i=1; i<=N; ++i)
{
i1=s1=0;i2=s2=0;
for(j=1; j<=B; ++j)
{
put_D1( A[i][j],j );
put_D2( A[i][j],j );
}
M1[i][1]=D1[i1];
M2[i][1]=D2[i2];
for(j=2; j<=M-B+1; ++j)
{
put_D1( A[i][j+B-1], j+B-1 );
put_D2( A[i][j+B-1], j+B-1 );
M1[i][j]=find_max( j );
M2[i][j]=find_min( j );
}
}
/*
for(i=1; i<=N; ++i)
{
for(j=1; j<=M; ++j)
printf("%d ",M1[i][j]);
printf("\n");
}
printf("\n");
for(i=1; i<=N; ++i)
{
for(j=1; j<=M; ++j)
printf("%d ",M2[i][j]);
printf("\n");
}
printf("\n");*/
for(j=1; j<=M-B+1; ++j)
{
i1=s1=0;i2=s2=0;
for(i=1; i<=A1; ++i)
{
put_D1( M1[i][j],i );
put_D2( M2[i][j],i );
}
val=D1[i1]-D2[i2];
if( ANS>val )
ANS=val,cnt=1;
else
if( ANS==val )
++cnt;
for(i=2; i<=N-A1+1; ++i)
{
put_D1( M1[i+A1-1][j], i+A1-1 );
put_D2( M2[i+A1-1][j], i+A1-1 );
val=find_max(i)-find_min(i);
if( ANS>val )
ANS=val,cnt=1;
else
if( ANS==val )
++cnt;
}
}
//printf("%d\n",ANS);
}
int main()
{
freopen("struti.in","r",stdin);
freopen("struti.out","w",stdout);
reading();
while( T-- )
{
scanf("%d%d\n",&A1,&B);
ANS=0x3f3f3f3f;cnt=0;
solve();
if( A1!=B )
{
A1^=B;B^=A1;A1^=B;
solve();
}
printf("%d %d\n",ANS,cnt);
}
return 0;
}