#include <bits/stdc++.h>
using namespace std;
int a[2050][2050];
int xx[2050][2050];
const int N = 3;
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < k; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    if (a[x][y] == 0) {
      cout << x << ' ' << y << endl;
      a[x][y] = 1;
      continue;
    }
    int d = a[x][y];
    for (int x2 = max(1, x - N); x2 <= min(n, x + N); x2++) {
      for (int y2 = max(1, y - N); y2 <= min(m, y + N); y2++) {
        int D = a[x2][y2] - abs(x - x2) - abs(y - y2);
        if (D > d) {
          d = D;
          xx[x][y] = 1;
        }
      }
    }
    if (xx[x][y] == 0) xx[x][y] = 1;
    while (true) {
      bool b = false;
      for (int x1 = max(xx[x][y], x - d); x1 <= min(n, x + d); x1++) {
        int d1 = d - abs(x1 - x);
        if (d1 == 0) {
          if (a[x1][y] == 0) {
            printf("%d %d\n", x1, y);
            a[x1][y] = 1;
            xx[x][y] = x1 + 1;
            b = true;
            break;
          }
        } else {
          if (y - d1 >= 1 && a[x1][y - d1] == 0) {
            printf("%d %d\n", x1, y - d1);
            a[x1][y - d1] = 1;
            xx[x][y] = x1;
            b = true;
            break;
          }
          if (y + d1 <= m && a[x1][y + d1] == 0) {
            printf("%d %d\n", x1, y + d1);
            a[x1][y + d1] = 1;
            xx[x][y] = x1 + 1;
            b = true;
            break;
          }
        }
      }
      if (b) break;
      xx[x][y] = 1;
      d++;
    }
    a[x][y] = d;
  }
  return 0;
}
