#include <bits/stdc++.h>
using namespace std;
struct Node {
  Node *r;
  Node *d;
  int val;
  Node() {
    r = nullptr;
    d = nullptr;
    val = 0;
  }
};
typedef Node *Pnode;
pair<int, int> Read() {
  int x, y;
  scanf("%d%d", &x, &y);
  return {x, y};
}
Pnode Lookup(Pnode root, int x, int y) {
  Pnode p = root;
  while (x-- > 0) {
    p = p->d;
  }
  while (y-- > 0) {
    p = p->r;
  }
  return p;
}
void GoRight(Pnode u, Pnode v, int n) {
  for (int i = 0; i < n; ++i) {
    swap(u->d, v->d);
    u = u->r;
    v = v->r;
  }
}
void GoDown(Pnode u, Pnode v, int n) {
  for (int i = 0; i < n; ++i) {
    swap(u->r, v->r);
    u = u->d;
    v = v->d;
  }
}
int main() {
  int n, m, q;
  scanf("%d%d%d", &n, &m, &q);
  Pnode root = new Node;
  {
    Pnode cur = root;
    for (int i = 0; i < m; ++i) {
      Pnode next = new Node;
      cur->r = next;
      cur = cur->r;
    }
  }
  Pnode prev_row_start = root;
  for (int i = 0; i < n; ++i) {
    Pnode cur_row_start = new Node;
    prev_row_start->d = cur_row_start;
    Pnode prev_row = prev_row_start->r;
    Pnode cur = cur_row_start;
    for (int j = 0; j < m; ++j) {
      Pnode next = new Node;
      scanf("%d", &next->val);
      cur->r = next;
      prev_row->d = next;
      cur = cur->r;
      prev_row = prev_row->r;
    }
    prev_row_start = prev_row_start->d;
  }
  while (q-- > 0) {
    pair<int, int> u = Read();
    pair<int, int> v = Read();
    pair<int, int> sz = Read();
    Pnode u_left_top = Lookup(root, u.first - 1, u.second - 1);
    Pnode v_left_top = Lookup(root, v.first - 1, v.second - 1);
    Pnode u_right_top = Lookup(u_left_top, 1, sz.second);
    Pnode v_right_top = Lookup(v_left_top, 1, sz.second);
    Pnode u_left_bot = Lookup(u_left_top, sz.first, 1);
    Pnode v_left_bot = Lookup(v_left_top, sz.first, 1);
    Pnode u_left_top01 = Lookup(u_left_top, 0, 1);
    Pnode u_left_top10 = Lookup(u_left_top, 1, 0);
    Pnode v_left_top01 = Lookup(v_left_top, 0, 1);
    Pnode v_left_top10 = Lookup(v_left_top, 1, 0);
    GoRight(u_left_top01, v_left_top01, sz.second);
    GoRight(u_left_bot, v_left_bot, sz.second);
    GoDown(u_left_top10, v_left_top10, sz.first);
    GoDown(u_right_top, v_right_top, sz.first);
  }
  prev_row_start = root->r->d;
  for (int i = 0; i < n; ++i) {
    Pnode cur = prev_row_start;
    for (int j = 0; j < m; ++j) {
      printf("%d ", cur->val);
      cur = cur->r;
    }
    puts("");
    prev_row_start = prev_row_start->d;
  }
  return 0;
}
