import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 定义二维数组,分配空间。
String[] nm = br.readLine().split(" ");
int n = Integer.parseInt(nm[0]);
int m = Integer.parseInt(nm[1]);
String[][] array = new String[n][m];
// 将指定值分配给数组的每个元素。
for (int i = 0; i < n; i++) {
String[] arr = br.readLine().split(" ");
for (int j = 0; j < m; j++) {
array[i][j] = arr[j];
}
}
// 数组内容开始互换k次。
int k = Integer.parseInt(br.readLine());
for (int i = 0; i < k; i++) {
String[] tabArr = br.readLine().split(" ");
change(array, tabArr);
}
// 输出数组内容
System.out.print(printArr(array, n, m));
}
public static void change(String[][] arr, String[] ar) {
int a = Integer.parseInt(ar[1]) - 1;
int b = Integer.parseInt(ar[2]) - 1;
if (ar[0].equals("r")) {
String[] temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
} else if (ar[0].equals("c")) {
for (int i = 0; i < arr.length; i++) {
String temp = arr[i][a];
arr[i][a] = arr[i][b];
arr[i][b] = temp;
}
}
}
public static String printArr(String[][] arr, int row, int column) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
sb.append(arr[i][j]).append(" ");
}
sb.append("\n");
}
return sb.toString();
}
}