int main() {

	//分析
	//1 接收 行列数
	//2 接收 元素
	//3 接收k 要执行行列数变换次数
	//4 t代表要执行的操作
	//5 'r' 行行转换
	//6 'c' 行列转换
	//7. a b 代表要互换的行或列

	int n,m,temp[10][10],arr[10][10];

	scanf("%d %d",&n,&m);//接收行列数

	for(int i=0; i<n; i++) {
		for(int j=0; j<m; j++) {
			scanf("%d",&arr[i][j]);//接收数组元素
			temp[i][j]=arr[i][j];
		}
	}

	int k=0;

	scanf("%d",&k);//接收要操作的次数

	char t=' ';
	int a,b;
	while(k--) {

		scanf(" %c %d %d",&t,&a,&b);//接收操作及 需操作行列数

		if(t=='r') {
			for(int j=0; j<m; j++) {//交换值
				temp[a-1][j]=arr[a-1][j];
				arr[a-1][j]=arr[b-1][j];
				arr[b-1][j]=temp[a-1][j];
			}
		}

		else if(t=='c') {//交换值
			for(int i=0; i<n; i++) {
				temp[i][a-1]=arr[i][a-1];
				arr[i][a-1]=arr[i][b-1];
				arr[i][b-1]=temp[i][a-1];
			}
		}

	}

	for(int i=0; i<n; i++) {
		for(int j=0; j<m; j++) {
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}

	return 0;
}