#include <bits/stdc++.h>
using namespace std;
struct node {
  int val;
  node *l, *r, *u, *d;
  void print() {
    printf("%d: %d %d %d %d\n", val, l->val, r->val, u->val, d->val);
  }
};
int R, C, q;
int v[1002][1002];
node *f[1002][1002];
vector<pair<int, int> > pos;
void get(int r, int c, int &R, int &C, vector<node *> &v) {
  pos.clear();
  node *cur = f[r][0];
  for (int j = 0; j < c; ++j) cur = cur->r;
  v.clear();
  for (int i = 0; i < C; ++i) {
    v.push_back(cur);
    pos.push_back(make_pair(0, i));
    if (i + 1 == C) break;
    cur = cur->r;
  }
  if (R == 1) return;
  for (int i = 1; i < R; ++i) {
    cur = cur->d;
    v.push_back(cur);
    pos.push_back(make_pair(i, C - 1));
  }
  if (C == 1) return;
  for (int i = 1; i < C; ++i) {
    cur = cur->l;
    v.push_back(cur);
    pos.push_back(make_pair(R - 1, C - i - 1));
  }
  for (int i = 1; i + 1 < R; ++i) {
    cur = cur->u;
    v.push_back(cur);
    pos.push_back(make_pair(R - i - 1, 0));
  }
}
void Swap(node *a, node *b) {
  a->print();
  b->print();
  a->l->r = b;
  a->r->l = b;
  a->u->d = b;
  a->d->u = b;
  b->l->r = a;
  b->r->l = a;
  b->u->d = a;
  b->d->u = a;
  swap(a->l, b->l);
  swap(a->r, b->r);
  swap(a->u, b->u);
  swap(a->d, b->d);
  a->print();
  b->print();
}
int main() {
  scanf("%d%d%d", &R, &C, &q);
  for (int i = 1; i <= R; ++i)
    for (int j = 1; j <= C; ++j) scanf("%d", &v[i][j]);
  for (int i = 0; i <= R + 1; ++i) {
    for (int j = 0; j <= C + 1; ++j) {
      f[i][j] = new node();
      f[i][j]->val = v[i][j];
      if (i) f[i][j]->u = f[i - 1][j];
      if (j) f[i][j]->l = f[i][j - 1];
    }
  }
  for (int i = R + 1; i >= 0; --i)
    for (int j = C + 1; j >= 0; --j) {
      if (i + 1 <= R + 1) f[i][j]->d = f[i + 1][j];
      if (j + 1 <= C + 1) f[i][j]->r = f[i][j + 1];
    }
  int r1, c1, r2, c2, h, w;
  vector<node *> A, B;
  while (q--) {
    scanf("%d%d%d%d%d%d", &r1, &c1, &r2, &c2, &h, &w);
    get(r1, c1, h, w, A);
    get(r2, c2, h, w, B);
    assert(A.size() == B.size());
    int r = 0, c = 0;
    for (int i = 0; i < A.size(); ++i) {
      node *a = A[i];
      node *b = B[i];
      r = pos[i].first;
      c = pos[i].second;
      if (r == 0) {
        a->u->d = b;
        b->u->d = a;
        swap(a->u, b->u);
      }
      if (r == h - 1) {
        a->d->u = b;
        b->d->u = a;
        swap(a->d, b->d);
      }
      if (c == 0) {
        a->l->r = b;
        b->l->r = a;
        swap(a->l, b->l);
      }
      if (c == w - 1) {
        a->r->l = b;
        b->r->l = a;
        swap(a->r, b->r);
      }
    }
  }
  for (int i = 1; i <= R; ++i) {
    node *cur = f[i][0];
    for (int j = 0; j < C; ++j) {
      cur = cur->r;
      printf("%d ", cur->val);
    }
    puts("");
  }
  return 0;
}
