#include <bits/stdc++.h>
using namespace std;
char buf[32000000], *pt = buf, *o = buf;
int getint() {
  int f = 1, x = 0;
  while ((*pt != '-') && (*pt < '0' || *pt > '9')) pt++;
  if (*pt == '-')
    f = -1, pt++;
  else
    x = *pt++ - 48;
  while (*pt >= '0' && *pt <= '9') x = x * 10 + *pt++ - 48;
  return x * f;
}
char getch() {
  char ch;
  while (*pt < 'A' || *pt > 'Z') pt++;
  ch = *pt;
  pt++;
  return ch;
}
int n, m, q, K = 1005;
int prec[2400020], nxtc[2400020], prer[2400020], nxtr[2400020];
int g[1010][1010];
int go(int cur, int x, int y) {
  while (x) cur = nxtr[cur], x--;
  while (y) cur = nxtc[cur], y--;
  return cur;
}
void debug() {
  for (int i = 1; i <= n; ++i) {
    int cur = go(0, i, 0);
    for (int j = 1; j <= m; ++j) {
      cur = go(cur, 0, 1);
      int x = cur / K;
      int y = cur % K;
      printf("%d ", g[x][y]);
    }
    puts("");
  }
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) scanf("%d", &g[i][j]);
  for (int i = 0; i <= n; ++i)
    for (int j = 0; j <= m; ++j) {
      int x = i * K + j;
      int y = i * K + j + 1;
      nxtc[x] = y;
      prec[y] = x;
      y = (i + 1) * K + j;
      nxtr[x] = y;
      prer[y] = x;
    }
  while (q--) {
    int a, b, c, d, h, w;
    scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &h, &w);
    int Lx = go(0, a, b), Ly = go(0, c, d);
    int gx = go(Lx, 0, w - 1), gy = go(Ly, 0, w - 1);
    int fx = go(Lx, h - 1, 0), fy = go(Ly, h - 1, 0);
    int cx = Lx, cy = Ly;
    for (int i = 0; i < h; ++i) {
      if (i > 0) cx = go(cx, 1, 0), cy = go(cy, 1, 0);
      int px = prec[cx], py = prec[cy];
      nxtc[px] = cy, nxtc[py] = cx;
      prec[cy] = px, prec[cx] = py;
    }
    cx = Lx, cy = Ly;
    for (int i = 0; i < w; ++i) {
      if (i > 0) cx = go(cx, 0, 1), cy = go(cy, 0, 1);
      int px = prer[cx], py = prer[cy];
      nxtr[px] = cy, nxtr[py] = cx;
      prer[cy] = px, prer[cx] = py;
    }
    cx = gx, cy = gy;
    for (int i = 0; i < h; ++i) {
      if (i > 0) cx = go(cx, 1, 0), cy = go(cy, 1, 0);
      int nx = nxtc[cx], ny = nxtc[cy];
      prec[nx] = cy, prec[ny] = cx;
      nxtc[cy] = nx, nxtc[cx] = ny;
    }
    cx = fx, cy = fy;
    for (int i = 0; i < w; ++i) {
      if (i > 0) cx = go(cx, 0, 1), cy = go(cy, 0, 1);
      int nx = nxtr[cx], ny = nxtr[cy];
      prer[nx] = cy, prer[ny] = cx;
      nxtr[cy] = nx, nxtr[cx] = ny;
    }
  }
  for (int i = 1; i <= n; ++i) {
    int cur = go(0, i, 0);
    for (int j = 1; j <= m; ++j) {
      cur = go(cur, 0, 1);
      int x = cur / K;
      int y = cur % K;
      printf("%d ", g[x][y]);
    }
    puts("");
  }
  return 0;
}
