#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
struct node {
  int val;
  node* edges[4];
  node() {
    val = 0;
    for (int i = 0; i < 4; i++) {
      edges[i] = nullptr;
    }
  }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int N, M, Q;
  int a, b, c, d, w, h;
  cin >> N >> M >> Q;
  vector<vector<node> > mat(N + 2);
  for (int i = 0; i < N + 2; i++) {
    mat[i].resize(M + 2);
  }
  for (int i = 0; i < N + 2; i++) {
    for (int j = 0; j < M + 2; j++) {
      if (j != M + 1) mat[i][j].edges[0] = &mat[i][j + 1];
      if (j != 0) mat[i][j].edges[1] = &mat[i][j - 1];
      if (i != N + 1) mat[i][j].edges[2] = &mat[i + 1][j];
      if (i != 0) mat[i][j].edges[3] = &mat[i - 1][j];
    }
  }
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= M; j++) {
      cin >> mat[i][j].val;
    }
  }
  while (Q--) {
    cin >> a >> b >> c >> d >> h >> w;
    node *cur1 = &mat[0][b], *cur2 = &mat[0][d];
    for (int i = 0; i < a; i++) {
      cur1 = cur1->edges[2];
    }
    for (int i = 0; i < c; i++) {
      cur2 = cur2->edges[2];
    }
    node *move1 = cur1, *move2 = cur2;
    for (int i = 0; i < w; i++) {
      swap(move1->edges[3]->edges[2], move2->edges[3]->edges[2]);
      swap(move1->edges[3], move2->edges[3]);
      if (i + 1 != w) {
        move1 = move1->edges[0];
        move2 = move2->edges[0];
      }
    }
    for (int i = 0; i < h; i++) {
      swap(move1->edges[0]->edges[1], move2->edges[0]->edges[1]);
      swap(move1->edges[0], move2->edges[0]);
      if (i + 1 != h) {
        move1 = move1->edges[2];
        move2 = move2->edges[2];
      }
    }
    for (int i = 0; i < w; i++) {
      swap(move1->edges[2]->edges[3], move2->edges[2]->edges[3]);
      swap(move1->edges[2], move2->edges[2]);
      if (i + 1 != w) {
        move1 = move1->edges[1];
        move2 = move2->edges[1];
      }
    }
    for (int i = 0; i < h; i++) {
      swap(move1->edges[1]->edges[0], move2->edges[1]->edges[0]);
      swap(move1->edges[1], move2->edges[1]);
      if (i + 1 != h) {
        move1 = move1->edges[3];
        move2 = move2->edges[3];
      }
    }
    assert(move1 == cur1);
    assert(move2 == cur2);
  }
  for (int i = 1; i <= N; i++) {
    node* cur = &mat[i][0];
    for (int j = 0; j < M; j++) {
      cur = cur->edges[0];
      cout << cur->val << " \n"[j + 1 == M];
    }
  }
  return 0;
}
