The Map of Diamonds
题号:NC200048
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Vanis在某个古怪的建筑旁发现了一张正方形的地图,似乎预示着在不远的未来将会发生的某事。

Vanis想要看懂这张地图,于是便尝试旋转这个正方形。
这张地图上写着一个由不同整数数字组成的的矩阵。

Vanis会做q次操作,分别是:
1. 顺时针旋转90度。
2. 逆时针旋转90度。

Vanis会告诉你这张地图原始摆放时的图案,之后会告诉你他的q次操作,希望你能告诉他完成q次操作后的图案。

参考图如下,图二可以通过图一进行操作2(逆时针旋转90度)得到,图三可以通过图一进行操作1(顺时针旋转90度)得到。
图一:

图二:

图三:

输入描述:

第一行输入两个正整数n和q,之间使用一个空格符分隔。
从第二行开始,每行输入n个正整数,连续输入n行,每行相邻整数之间使用一个空格符分隔,从第二行开始的第i行的第j个正整数记作
之后输入一行,为一个长度为q的只有组成的字符串,表示Vanis的操作序列,依次对应题目表述中的两种操作。

数据规范:
* .
* .
* .
* 保证矩阵中不存在相同元素。

输出描述:

输出一个的矩阵,表示最后的图案。连续n行,每行包含n个正整数,相邻整数之间使用一个空格符分隔。
示例1

输入

复制
3 1
1 2 3
4 5 6
7 8 9
1

输出

复制
7 4 1
8 5 2
9 6 3
示例2

输入

复制
3 1
1 2 3
4 5 6
7 8 9
2

输出

复制
3 6 9
2 5 8
1 4 7

备注:

数据量很大,请务必使用较为快速的输入输出方式。(如C/C++的scanf和printf)