#include <stdio.h>
#define ROW 10
#define COL 10

void translation_row(int arr[ROW][COL], int row1, int row2, int col){ 
    for(int j = 0; j < col; j++){ 
        arr[row1][j] = arr[row1][j] ^ arr[row2][j];
        arr[row2][j] = arr[row1][j] ^ arr[row2][j];
        arr[row1][j] = arr[row1][j] ^ arr[row2][j];
    }
}
void translation_col(int arr[ROW][COL], int col1, int col2, int row){
    for(int i = 0; i < row; i++){
        arr[i][col1] = arr[i][col1] ^ arr[i][col2];
        arr[i][col2] = arr[i][col1] ^ arr[i][col2];
        arr[i][col1] = arr[i][col1] ^ arr[i][col2];
    }
}

int main(){
    int n, m, arr[ROW][COL], i, j = 0;
    int count, num1, num2; // 操作次数 操作数1(行or列) 操作数2(行or列)
    char option; 
    scanf("%d %d", &n, &m);
    for(i = 0; i < n * m; i++, j++)
        scanf("%d", &arr[i / m][j % m]);
    scanf("%d", &count);
    while(count > 0){
        getchar();
        scanf("%c %d %d", &option, &num1, &num2);
        switch(option){
            case 'r':
                translation_row(arr, num1-1, num2-1, m); //行变换
                break;
            case 'c':
                translation_col(arr, num1-1, num2-1, n); //列变换
                break;
            default:
                break;
        }
        count--;
    }
    for(i = 0; i < n * m; i++, j++){
        printf("%d ", arr[i / m][j % m]);
        if((j + 1) % m == 0)
            printf("\n");
    }
    return 0;
}