#CF1458C. 拉丁方

拉丁方

C. 拉丁方

每个测试的时间限制:2 秒
内存限制:512 兆字节

给定一个大小为 nn 的方阵。矩阵的每一行和每一列都是 1,2,,n1, 2, \dots, n 的一个排列。用 ai,ja_{i,j} 表示第 ii 行第 jj 列交叉处的元素,其中 1i,jn1 \le i, j \le n。行从上到下编号为 1,,n1, \dots, n,列从左到右编号为 1,,n1, \dots, n

共有六种类型的操作:

  • R:将所有列循环右移。形式化地,将每个 ai,ja_{i,j} 的值设为 ai,((j2)modn)+1a_{i, ((j-2) \bmod n) + 1}
  • L:将所有列循环左移。形式化地,将每个 ai,ja_{i,j} 的值设为 ai,(jmodn)+1a_{i, (j \bmod n) + 1}
  • D:将所有行循环下移。形式化地,将每个 ai,ja_{i,j} 的值设为 a((i2)modn)+1,ja_{((i-2) \bmod n) + 1, j}
  • U:将所有行循环上移。形式化地,将每个 ai,ja_{i,j} 的值设为 a(imodn)+1,ja_{(i \bmod n) + 1, j}
  • I:将每一行从左到右读出的排列替换为其逆排列。
  • C:将每一列从上到下读出的排列替换为其逆排列。

一个排列 p1,p2,,pnp_1, p_2, \dots, p_n逆排列是一个排列 q1,q2,,qnq_1, q_2, \dots, q_n,使得对于每个 1in1 \le i \le npqi=ip_{q_i} = i

容易看出,经过任意操作序列后,矩阵的每一行和每一列仍然是 1,2,,n1, 2, \dots, n 的一个排列。

给定初始矩阵的描述,你需要处理 mm 个操作,并输出最终的矩阵。

输入
第一行包含一个整数 tt1t10001 \le t \le 1000)——测试用例的数量。接下来是 tt 个测试用例的描述。

每个测试用例的第一行包含两个整数 nnmm1n10001 \le n \le 10001m1051 \le m \le 10^5)——矩阵的大小和操作的数量。

接下来的 nn 行,每行包含 nn 个由空格分隔的整数——矩阵 aa 的描述(1ai,jn1 \le a_{i,j} \le n)。

最后一行包含一个长度为 mm 的字符串,按顺序描述操作,格式如上所述。

所有测试用例的 nn 之和不超过 10001000mm 之和不超过 10510^5

输出
对于每个测试用例,输出 nn 行,每行 nn 个整数——经过 mm 次操作后的最终矩阵。

示例

输入

5
3 2
1 2 3
2 3 1
3 1 2
DR
3 2
1 2 3
2 3 1
3 1 2
LU
3 1
1 2 3
2 3 1
3 1 2
I
3 1
1 2 3
2 3 1
3 1 2
C
3 16
1 2 3
2 3 1
3 1 2
LDICRUCILDICRUCI

输出

2 3 1 
3 1 2 
1 2 3 

3 1 2 
1 2 3 
2 3 1 

1 2 3 
3 1 2 
2 3 1 

1 3 2 
2 1 3 
3 2 1 

2 3 1 
3 1 2 
1 2 3

:示例答案之间的空行仅为了清晰,实际输出时不需要打印空行。