#include <bits/stdc++.h>
using namespace std;
int n, m, q, cnt, a, b, c, d, h, w, p1, p2, y, g, u, v, s1, s2;
struct node {
  int rn, bn, val;
} p[1100005];
int x[1005][1005];
inline void swap(int &a, int &b) {
  a += b;
  b = a - b;
  a -= b;
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (register int i = 0; i <= n; i++)
    for (register int j = 0; j <= m; j++) x[i][j] = ++cnt;
  cnt = 0;
  for (register int i = 0; i <= n; i++)
    for (register int j = 0; j <= m; j++)
      p[++cnt].rn = x[i][j + 1], p[cnt].bn = x[i + 1][j];
  for (register int i = p[1].bn; i; i = p[i].bn)
    for (register int j = p[i].rn; j; j = p[j].rn) scanf("%d", &p[j].val);
  for (register int i = 1; i <= q; i++) {
    scanf("%d%d%d%d%d%d", &b, &a, &d, &c, &h, &w);
    p1 = p2 = 1;
    for (register int i = 1; i < a; i++) p1 = p[p1].rn;
    for (register int i = 1; i < b; i++) p1 = p[p1].bn;
    for (register int i = 1; i < c; i++) p2 = p[p2].rn;
    for (register int i = 1; i < d; i++) p2 = p[p2].bn;
    y = p[p1].rn;
    g = p[p2].rn;
    u = p[p1].bn;
    v = p[p2].bn;
    for (register int i = 1; i < w; i++) {
      swap(p[y].bn, p[g].bn);
      y = p[y].rn;
      g = p[g].rn;
    }
    swap(p[y].bn, p[g].bn);
    y = p[y].bn;
    g = p[g].bn;
    for (register int i = 1; i < h; i++) {
      swap(p[u].rn, p[v].rn);
      swap(p[y].rn, p[g].rn);
      u = p[u].bn;
      v = p[v].bn;
      y = p[y].bn;
      g = p[g].bn;
    }
    swap(p[u].rn, p[v].rn);
    u = p[u].rn;
    v = p[v].rn;
    swap(p[y].rn, p[g].rn);
    for (register int i = 1; i <= w; i++) {
      swap(p[u].bn, p[v].bn);
      u = p[u].rn;
      v = p[v].rn;
    }
  }
  for (register int i = p[1].bn; i; i = p[i].bn) {
    for (register int j = p[i].rn; j; j = p[j].rn) printf("%d ", p[j].val);
    printf("\n");
  }
  return 0;
}
