#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int val[1005 * 1005];
int down[1005 * 1005];
int rigt[1005 * 1005];
int getpos(int x, int y) {
  int pos = 0;
  while (x) pos = down[pos], x--;
  while (y) pos = rigt[pos], y--;
  return pos;
}
int main() {
  int n, m, q;
  cin >> n >> m >> q;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      scanf("%d", &val[i * (m + 1) + j]);
    }
  }
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= m; j++) {
      down[i * (m + 1) + j] = (i + 1) * (m + 1) + j;
      rigt[i * (m + 1) + j] = i * (m + 1) + j + 1;
    }
  }
  for (int i = 1; i <= q; i++) {
    int x, y, x1, y1, h, w;
    scanf("%d%d%d%d%d%d", &x, &y, &x1, &y1, &h, &w);
    int p = getpos(x - 1, y - 1);
    int p1 = getpos(x1 - 1, y1 - 1);
    int tmp = p, tmp1 = p1;
    for (int i = 0; i < h; i++) {
      tmp = down[tmp], tmp1 = down[tmp1];
      swap(rigt[tmp], rigt[tmp1]);
    }
    for (int i = 0; i < w; i++) {
      tmp = rigt[tmp], tmp1 = rigt[tmp1];
      swap(down[tmp], down[tmp1]);
    }
    tmp = p, tmp1 = p1;
    for (int i = 0; i < w; i++) {
      tmp = rigt[tmp], tmp1 = rigt[tmp1];
      swap(down[tmp], down[tmp1]);
    }
    for (int i = 0; i < h; i++) {
      tmp = down[tmp], tmp1 = down[tmp1];
      swap(rigt[tmp], rigt[tmp1]);
    }
  }
  int p = m + 1;
  for (int i = 0; i < n; i++) {
    int tmp = p;
    for (int j = 0; j < m; j++) {
      printf("%d ", val[rigt[tmp]]);
      tmp = rigt[tmp];
    }
    puts("");
    p = down[p];
  }
  return 0;
}
