#include<stdio.h>

int main()
{
	int arr[10][10] = { 0 }, n = 0, m = 0, input = 0;
	char inst = '0';
	int k = 0, target1 = 0, target2 = 0;
	//输入矩阵维数
	scanf("%d %d\n", &n, &m);
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < m; j++)
			{
				//输入矩阵
				scanf("%d ", &input);
				arr[i][j] = input;
			}
		}
		//输入操作次数
		scanf("%d\n", &k);
		while (k--)
		{
			//输入具体操作和目标行列
			scanf("%c %d %d\n", &inst, &target1, &target2);
			target1--, target2--;
			if (inst == 'r')
			{
				for (int j = 0; j < m; j++)
				{
					//行变换
					arr[target1][j] = arr[target1][j] ^ arr[target2][j];
					arr[target2][j] = arr[target1][j] ^ arr[target2][j];
					arr[target1][j] = arr[target1][j] ^ arr[target2][j];
				}
			}
			else if (inst == 'c')
			{
				for (int i = 0; i < n; i++)
				{
					//列变换
					arr[i][target1] = arr[i][target1] ^ arr[i][target2];
					arr[i][target2] = arr[i][target1] ^ arr[i][target2];
					arr[i][target1] = arr[i][target1] ^ arr[i][target2];
				}
			}
		}
		//输出矩阵
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < m; j++)
			{
				printf("%d ", arr[i][j]);
			}
			printf("\n");
		}
	return 0;
}