#include <bits/stdc++.h>
using namespace std;
struct node {
  int v;
  node *l, *r, *u, *d;
} M[1005][1005];
int n, m, q, a, b, c, d, h, w;
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 1; i <= n; i++) M[i][0].r = &M[i][1];
  for (int i = 1; i <= n; i++) M[i][m + 1].l = &M[i][m];
  for (int i = 1; i <= m; i++) M[0][i].d = &M[1][i];
  for (int i = 1; i <= m; i++) M[n + 1][i].u = &M[n][i];
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      scanf("%d", &M[i][j].v);
      M[i][j].l = &M[i][j - 1];
      M[i][j].r = &M[i][j + 1];
      M[i][j].u = &M[i - 1][j];
      M[i][j].d = &M[i + 1][j];
    }
  while (q--) {
    scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &h, &w);
    node *p1 = &M[a][0], *p2 = &M[c][0];
    for (int i = 1; i <= b; i++) p1 = p1->r;
    for (int i = 1; i <= d; i++) p2 = p2->r;
    for (int i = 1; i <= w; i++) {
      swap(p1->u, p2->u);
      swap(p1->u->d, p2->u->d);
      p1 = p1->r;
      p2 = p2->r;
    }
    p1 = p1->l;
    p2 = p2->l;
    for (int i = 1; i <= h; i++) {
      swap(p1->r, p2->r);
      swap(p1->r->l, p2->r->l);
      p1 = p1->d;
      p2 = p2->d;
    }
    p1 = p1->u;
    p2 = p2->u;
    for (int i = 1; i <= w; i++) {
      swap(p1->d, p2->d);
      swap(p1->d->u, p2->d->u);
      p1 = p1->l;
      p2 = p2->l;
    }
    p1 = p1->r;
    p2 = p2->r;
    for (int i = 1; i <= h; i++) {
      swap(p1->l, p2->l);
      swap(p1->l->r, p2->l->r);
      p1 = p1->u;
      p2 = p2->u;
    }
  }
  for (int i = 1; i <= n; i++) {
    node *p = M[i][0].r;
    for (int j = 1; j <= m; j++) printf("%d ", p->v), p = p->r;
    puts("");
  }
  return 0;
}
