#include <iostream>
using namespace std;
/*
Declarăm și citim de la tastatură dimensiunile matricei(n, m)
cât și numărul de operații “q”.
Declarăm și citim de la tastatura matricea.
Pentru “q” pași:
Declaram variabilele “k”, “i” și “j”.
Citim de la tastatura operația “k” cât și variabilele “i” și “j”.
Dacă “k” are valoarea “1”:
Declaram variabila “x”.
Citim de la tastatura și “x”.
Înlocuim în matrice elementul de coordonate “i”, “j” cu valoarea “x”.
În caz contrar:
Declarăm variabilele “u” și “v”.
Citim de la tastatura variabilele “u” și “v”.
Înlocuim în matrice elementul de coordonate “i”, “j” cu elementul de coordonate “u”, “v”.
Afișăm matricea.
*/
const int MAX_SIZE = 10;
int main() {
int n, m, q;
cin >> n >> m >> q;
int mt[MAX_SIZE + 1][MAX_SIZE + 1];
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cin >> mt[i][j];
}
}
for (int p = 1; p <= q; ++p) {
int k, i, j;
cin >> k >> i >> j;
if (k == 1) {
int x;
cin >> x;
mt[i][j] = x;
} else {
int u, v;
cin >> u >> v;
mt[i][j] = mt[u][v];
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cout << mt[i][j] << " ";
}
cout << "\n";
}
return 0;
}
/*
1 3 9 2 9
11 8 10 12 14
18 2 17 11 20
*/
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovKgpEZWNsYXLEg20gyJlpIGNpdGltIGRlIGxhIHRhc3RhdHVyxIMgZGltZW5zaXVuaWxlIG1hdHJpY2VpKG4sIG0pIApjw6J0IMiZaSBudW3Eg3J1bCBkZSBvcGVyYcibaWkg4oCcceKAnS4KRGVjbGFyxINtIMiZaSBjaXRpbSBkZSBsYSB0YXN0YXR1cmEgbWF0cmljZWEuClBlbnRydSDigJxx4oCdIHBhyJlpOgoJRGVjbGFyYW0gdmFyaWFiaWxlbGUg4oCca+KAnSwg4oCcaeKAnSDImWkg4oCcauKAnS4KCUNpdGltIGRlIGxhIHRhc3RhdHVyYSBvcGVyYcibaWEg4oCca+KAnSBjw6J0IMiZaSB2YXJpYWJpbGVsZSDigJxp4oCdIMiZaSDigJxq4oCdLgoJRGFjxIMg4oCca+KAnSBhcmUgdmFsb2FyZWEg4oCcMeKAnToKCQlEZWNsYXJhbSB2YXJpYWJpbGEg4oCceOKAnS4KCQlDaXRpbSBkZSBsYSB0YXN0YXR1cmEgyJlpIOKAnHjigJ0uCgkJw45ubG9jdWltIMOubiBtYXRyaWNlIGVsZW1lbnR1bCBkZSBjb29yZG9uYXRlIOKAnGnigJ0sIOKAnGrigJ0gY3UgdmFsb2FyZWEg4oCceOKAnS4KCcOObiBjYXogY29udHJhcjoKCQlEZWNsYXLEg20gdmFyaWFiaWxlbGUg4oCcdeKAnSDImWkg4oCcduKAnS4KCQlDaXRpbSBkZSBsYSB0YXN0YXR1cmEgdmFyaWFiaWxlbGUg4oCcdeKAnSDImWkg4oCcduKAnS4KCQnDjm5sb2N1aW0gw65uIG1hdHJpY2UgZWxlbWVudHVsIGRlIGNvb3Jkb25hdGUg4oCcaeKAnSwg4oCcauKAnSBjdSBlbGVtZW50dWwgZGUgY29vcmRvbmF0ZSDigJx14oCdLCDigJx24oCdLgpBZmnImcSDbSBtYXRyaWNlYS4KKi8KCmNvbnN0IGludCBNQVhfU0laRSA9IDEwOwoKaW50IG1haW4oKSB7CglpbnQgbiwgbSwgcTsKCWNpbiA+PiBuID4+IG0gPj4gcTsKCWludCBtdFtNQVhfU0laRSArIDFdW01BWF9TSVpFICsgMV07Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKCQlmb3IgKGludCBqID0gMTsgaiA8PSBtOyArK2opIHsKCQkJY2luID4+IG10W2ldW2pdOwoJCX0KCX0KCWZvciAoaW50IHAgPSAxOyBwIDw9IHE7ICsrcCkgewoJCWludCBrLCBpLCBqOwoJCWNpbiA+PiBrID4+IGkgPj4gajsKCQlpZiAoayA9PSAxKSB7CgkJCWludCB4OwoJCQljaW4gPj4geDsKCQkJbXRbaV1bal0gPSB4OwoJCX0gZWxzZSB7CgkJCWludCB1LCB2OwoJCQljaW4gPj4gdSA+PiB2OwoJCQltdFtpXVtqXSA9IG10W3VdW3ZdOwoJCX0KCX0KCWZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewoJCWZvciAoaW50IGogPSAxOyBqIDw9IG07ICsraikgewoJCQljb3V0IDw8IG10W2ldW2pdIDw8ICIgIjsKCQl9CgkJY291dCA8PCAiXG4iOwoJfQoJcmV0dXJuIDA7Cn0KLyoKMSAzIDkgMiA5CjExIDggMTAgMTIgMTQKMTggMiAxNyAxMSAyMAoqLw==