#include <bits/stdc++.h>
using namespace std;
struct Node {
  int v;
  Node *r, *d;
  Node() {}
} * cur, *cur2, *rp, *rp2;
Node g[1005][1005];
int n, m, q, v;
int a, b, c, d, h, w;
Node* navigate(int r, int c) {
  Node* p = &g[0][0];
  for (int i = 0; i < r; i++) p = p->d;
  for (int i = 0; i < c; i++) p = p->r;
  return p;
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= m; j++) {
      if (!i && !j)
        continue;
      else if (!i && j) {
        g[i][j - 1].r = &g[i][j];
      } else if (i && !j) {
        g[i - 1][j].d = &g[i][j];
      } else {
        scanf("%d", &g[i][j].v);
        g[i][j - 1].r = &g[i][j];
        g[i - 1][j].d = &g[i][j];
      }
    }
  while (q--) {
    scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &h, &w);
    cur = rp = navigate(a - 1, b - 1), cur2 = rp2 = navigate(c - 1, d - 1);
    for (int i = 0; i < h; i++) {
      cur = cur->d;
      cur2 = cur2->d;
      swap(cur->r, cur2->r);
    }
    for (int j = 0; j < w; j++) {
      cur = cur->r;
      cur2 = cur2->r;
      swap(cur->d, cur2->d);
    }
    cur = rp;
    cur2 = rp2;
    for (int i = 0; i < w; i++) {
      cur = cur->r;
      cur2 = cur2->r;
      swap(cur->d, cur2->d);
    }
    for (int j = 0; j < h; j++) {
      cur = cur->d;
      cur2 = cur2->d;
      swap(cur->r, cur2->r);
    }
  }
  cur = &g[0][1];
  for (int i = 1; i <= n; i++) {
    cur = cur->d;
    cur2 = cur;
    for (int j = 1; j <= m; j++) {
      printf("%d ", cur2->v);
      cur2 = cur2->r;
    }
    cout << endl;
  }
  return 0;
}
