#include <bits/stdc++.h>
using namespace std;
int k, m, n;
struct node {
  int v, D, R;
} a[1100010];
int main() {
  cin >> n >> m >> k;
  n++;
  m++;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      int v = (i - 1) * m + j;
      if (i > 1 && j > 1) cin >> a[v].v;
      if (i != n) a[v].D = v + m;
      if (j != m) a[v].R = v + 1;
    }
  while (k--) {
    int X1, Y1, X2, Y2, L, C, q = 1, u = 1, e, y;
    cin >> X1 >> Y1 >> X2 >> Y2 >> L >> C;
    while (--X1) q = a[q].D;
    while (--X2) u = a[u].D;
    while (--Y1) q = a[q].R;
    while (--Y2) u = a[u].R;
    e = q;
    y = u;
    for (int i = 1; i <= L; i++) q = a[q].D, u = a[u].D, swap(a[q].R, a[u].R);
    for (int i = 1; i <= C; i++) q = a[q].R, u = a[u].R, swap(a[q].D, a[u].D);
    for (int i = 1; i <= C; i++) e = a[e].R, y = a[y].R, swap(a[e].D, a[y].D);
    for (int i = 1; i <= L; i++) e = a[e].D, y = a[y].D, swap(a[e].R, a[y].R);
  }
  int pla = a[a[1].D].R;
  for (int i = 1; i < n; i++, pla = a[pla].D) {
    for (int j = 1, d = pla; j < m; j++, d = a[d].R) printf("%d ", a[d].v);
    putchar('\n');
  }
  return 0;
}
