//#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i,l,r) for(i = l; i <= r; i++) #define red(i,l,r) for(i=(l);i>=(r);i--) #define u_long unsigned long long #define fff(i, u) for(i = head[u]; i != -1; i = nxt[i]) #define fin() freopen("in.txt", "r", stdin) #define fout() freopen("out.txt", "w", stdout) #define clr(vis, a) memset(vis, a, sizeof(vis)) #define LL long long #define ls id << 1 #define rs id << 1 | 1 #define lson id << 1, l, mid #define rson id << 1 | 1, mid + 1, r #define mid ( (l + r) >> 1 ) #define pb push_back #define mp make_pair #define pii pair #define X first #define Y second #define eps 1e-9 #define pi acos(-1) const int maxn = 1e3 + 10; const int maxm = maxn * 4 + 10; const int inf = 1e9; const LL mod = 1e9 + 7; int getint() { char c; while((c = getchar()) && !(c >= '0' && c <= '9') && c != '-'); int ret = c - '0', sgn = 0; if(c == '-') sgn = 1, ret = 0; while((c = getchar()) && c >= '0' && c <= '9') ret = ret * 10 + c - '0'; if(sgn) ret = -ret; return ret; } int a[maxn][1010]; int c[maxn], r[maxn]; LL adc[maxn], adr[maxn], ans[maxn][1010]; int main(){ //fin(); int T = getint(); while(T --){ clr(adc, 0); clr(adr, 0); int n = getint(), m = getint(), q = getint(); for(int i = 1; i <= n; i ++){ r[i] = i; for(int j = 1; j <= m; j ++){ scanf("%d", &a[i][j]); c[j] = j; } } while(q --){ int a = getint(), x = getint(), y = getint(); if(a == 1){ int u = x, v = y; int temp = r[u]; r[u] = r[v]; r[v] = temp; } if(a == 2){ //cout << c[x] << " " << c[y] << endl; int u = x, v = y; int temp = c[u]; c[u] = c[v]; c[v] = temp; } if(a == 3){ adr[r[x]] += y; } if(a == 4){ adc[c[x]] += y; } } //cout << r[1] << " " << r[2] << endl; for(int i = 1; i <= n; i ++){ int rr = r[i]; for(int j = 1; j <= m; j ++){ int cc = c[j]; LL temp = adr[rr] + adc[cc] + a[rr][cc]; if(j > 1) printf(" "); printf("%I64d", temp); } printf("\n"); } } return 0; }