#include <bits/stdc++.h>
using namespace std;
struct Node {
  int right, down;
  int v;
} _Node[1010 * 1010];
int a[1010][1010], b[1010][1010];
int idx;
int move(int p, int x, int y) {
  while (x--) {
    p = _Node[p].down;
  }
  while (y--) {
    p = _Node[p].right;
  }
  return p;
}
void print(int n, int m) {
  int p = b[0][0];
  for (int i = 1; i <= n; i++) {
    p = move(p, 1, 0);
    int ip = p;
    for (int j = 0; j < m; j++) {
      ip = _Node[ip].right;
      cout << _Node[ip].v;
      if (j + 1 == m)
        cout << endl;
      else
        cout << " ";
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  int n, m, q;
  while (cin >> n >> m >> q) {
    idx = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        cin >> a[i][j];
      }
    }
    for (int i = 0; i <= n; i++) {
      for (int j = 0; j <= m; j++) {
        b[i][j] = idx++;
        _Node[b[i][j]].v = a[i][j];
        if (j) {
          _Node[b[i][j - 1]].right = b[i][j];
        }
        if (i) {
          _Node[b[i - 1][j]].down = b[i][j];
        }
      }
    }
    while (q--) {
      int ai, bi, ci, di, hi, wi;
      cin >> ai >> bi >> ci >> di >> hi >> wi;
      int p1 = move(b[0][0], ai - 1, bi - 1);
      int p2 = move(b[0][0], ci - 1, di - 1);
      int dp1 = move(p1, 1, 0);
      int dp2 = move(p2, 1, 0);
      for (int i = 0; i < hi; i++) {
        swap(_Node[dp1].right, _Node[dp2].right);
        dp1 = move(dp1, 1, 0);
        dp2 = move(dp2, 1, 0);
      }
      int rp1 = move(p1, 0, 1);
      int rp2 = move(p2, 0, 1);
      for (int i = 0; i < wi; i++) {
        swap(_Node[rp1].down, _Node[rp2].down);
        rp1 = move(rp1, 0, 1);
        rp2 = move(rp2, 0, 1);
      }
      dp1 = move(p1, 1, wi);
      dp2 = move(p2, 1, wi);
      for (int i = 0; i < hi; i++) {
        swap(_Node[dp1].right, _Node[dp2].right);
        dp1 = move(dp1, 1, 0);
        dp2 = move(dp2, 1, 0);
      }
      rp1 = move(p1, hi, 1);
      rp2 = move(p2, hi, 1);
      for (int i = 0; i < wi; i++) {
        swap(_Node[rp1].down, _Node[rp2].down);
        rp1 = move(rp1, 0, 1);
        rp2 = move(rp2, 0, 1);
      }
    }
    print(n, m);
  }
  return 0;
}
