C. 二维数组变换
time limit per test
1 second
memory limit per test
512 megabytes
input
standard input
output
standard output

给定一个 $$$n*n$$$ 的二维矩阵 $$$A$$$,你需要对左上角为 $$$(x_0,y_0)$$$,右下角为 $$$(x_1,y_1)$$$ 的子矩阵进行下面五种操作

  • $$$1\ x_0\ y_0\ x_1\ y_1$$$:顺时针旋转九十度
  • $$$2\ x_0\ y_0\ x_1 \ y_1$$$:左右对称翻转
  • $$$3\ x_0\ y_0\ x_1\ y_1$$$:上下对称翻转
  • $$$4\ x_0\ y_0\ x_1\ y_1$$$:延左上至右下对角线翻转
  • $$$5\ x_0\ y_0\ x_1\ y_1$$$:延右上至左下对角线翻转

现给定 $$$q$$$ 次操作, 你需要依次完成,并输出最终结果。

注:保证子矩阵为正方形,如果对操作含义不是很清楚,可结合样例理解

Input

第一行包含 $$$2$$$ 个整数 $$$n$$$ 和 $$$q$$$

接下来 $$$n$$$ 行,每行 $$$n$$$ 个整数,描述二维数组 $$$A$$$

最后 $$$q$$$ 行,每行五个整数,代表一种操作,含义如题面所示

$$$1\le n \le500, 1\le q\le100,x_0\le x_1,y_0\le y_1,0\le A_{i, j}\le255$$$

Output

输出 $$$n$$$ 行,每行包含 $$$n$$$ 个数

Examples
Input
3 1
1 2 3
4 5 6
7 8 9
1 1 1 3 3
Output
7 4 1 
8 5 2 
9 6 3 
Input
3 1
1 2 3
4 5 6
7 8 9
3 1 1 3 3
Output
7 8 9 
4 5 6 
1 2 3 
Input
3 1
1 2 3
4 5 6
7 8 9
4 1 1 3 3
Output
1 4 7 
2 5 8 
3 6 9