#include <fstream>
#include <deque>
#define pi std::pair<int, int>
const int nmax = 1e3 + 5;
const int inf = 2e9;
int v[nmax][nmax], n, m, q, mn, nr, x;
std::deque<pi>dmin[nmax], dmax[nmax], dmn, dmx;
void dewit(std::deque<pi>& dq, pi curr, int i, int j, int semn) {
if (!dq.empty() and dq.front().second < j - i + 1) dq.pop_front();
while (!dq.empty() and dq.back().first * semn > curr.first * semn) dq.pop_back();
dq.push_back(curr);
}
void solve(int x, int y) {
for (int j = 1; j <= m; j++) {
dmin[j].clear();
dmax[j].clear();
for (int i = 1; i < x; i++) {
dewit(dmin[j], { v[i][j], i }, 2, 0, 1);
dewit(dmax[j], { v[i][j], i }, 2, 0, -1);
}
}
for (int i = x; i <= n; i++) {
for (int j = 1; j <= m; j++) {
pi curr = { v[i][j], i };
dewit(dmin[j], curr, x, i, 1);
dewit(dmax[j], curr, x, i, -1);
}
dmn.clear();
dmx.clear();
for (int j = 1; j < y; j++) {
dewit(dmn, { dmin[j].front().first, j }, 2, 0, 1);
dewit(dmx, { dmax[j].front().first, j }, 2, 0, -1);
}
for (int j = y; j <= m; j++) {
dewit(dmn, {dmin[j].front().first, j}, y, j, 1);
dewit(dmx, { dmax[j].front().first, j }, y, j, -1);
if (dmx.front().first - dmn.front().first < mn) mn = dmx.front().first - dmn.front().first, nr = 0;
if (dmx.front().first - dmn.front().first == mn) nr++;
}
}
}
int main() {
std::ifstream fin("struti.in");
std::ofstream fout("struti.out");
fin >> n >> m >> q;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
fin >> v[i][j];
while (q--) {
int x, y;
mn = inf, nr = 0;
fin >> x >> y;
solve(x, y);
if (x != y) solve(y, x);
fout << mn << " " << nr << "\n";
}
}