#2956. 旋旋旋旋旋旋旋

旋旋旋旋旋旋旋

题目描述

给你一个 n×nn \times n 的二维数组 aa,然后依次对这个二维数组执行 qq 次操作,每个操作都是以下七种旋操作中的一种:

  1. 把最上面一行平移到最下面。
  2. 把最下面一行平移到最上面。
  3. 把最左边一列平移到最右边。
  4. 把最右边一列平移到最左边。
  5. 顺时针旋转 90°90\degree
  6. 顺时针旋转 180°180\degree
  7. 顺时针旋转 270°270\degree

每次操作结束后,你都要输出当前的每次操作结束后,你都要输出当前的 a

输入格式

从文件从文件 rotate.in 中读入数据。

第一行,两个正整数第一行,两个正整数 n, q

接下来接下来 n行,每行 行,每行 n个正整数,表示二维数组 个正整数,表示二维数组 a

接下来一行,接下来一行,q$ 个值为 171\sim7 的正整数,表示执行操作的编号。$

输出格式

输出到文件输出到文件 rotate.out 中。

q个二维数组,表示每次操作后的 个二维数组,表示每次操作后的 a

每个二维数组都有每个二维数组都有 n行,每行 行,每行 n个整数。 个整数。

每两个相邻的二维数组之间都要一行空行分割。每两个相邻的二维数组之间都要一行空行分割。

样例 1

输入输入

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

输出输出

4 5 6
7 8 9
1 2 3

1 2 3
4 5 6
7 8 9

2 3 1
5 6 4
8 9 7

1 2 3
4 5 6
7 8 9

7 4 1
8 5 2
9 6 3

3 6 9
2 5 8
1 4 7

9 8 7
6 5 4
3 2 1

样例 2

输入输入

3 3
1 1 1
2 2 2
3 3 3
1 1 1

输出输出

2 2 2
3 3 3
1 1 1

3 3 3
1 1 1
2 2 2

1 1 1
2 2 2
3 3 3

样例 3

输入输入 rotate3

输出输出

见下发文件中的 rotate3.out

样例 4

输入输入

见下发文件中的 rotate4.in

输出输出

见下发文件中的 rotate4.out

数据范围与提示

$本题共五个测试点,每个测试点都有 2020 分。$

第一个测试点,满足第一个测试点,满足 n = 1

第二个测试点,保证只有前四种旋操作出现。第二个测试点,保证只有前四种旋操作出现。

第三个测试点,保证只有后三种旋操作出现。第三个测试点,保证只有后三种旋操作出现。

对于前四个测试点,对于前四个测试点,n \leqslant 10, q20q \leqslant 20

对于所有的测试点,1n,q100,1a对于所有的测试点,1 \leqslant n, q \leqslant 100, 1 \leqslant a 中的元素 n2\leqslant n^2