14362 - 符文矩阵变换
上古遗迹中存在一座稳定运行的二维符文矩阵,矩阵的每个方格内都封存着一枚带有整数权值的符文。研究者会按照固定的坐标序列依次激活矩阵内的符文格,每次激活都会根据当前符文的权值奇偶性,触发对应的矩阵换位规则。不同权值的符文会驱动方格向不同方向换位。请你模拟完整的符文激活流程,计算最终的矩阵状态。
给定一个 n 行 m 列的整数矩阵,给定一组有序的激活坐标序列,你需要按顺序依次激活对应方格并执行变换操作,所有操作基于上一次变换后的矩阵状态执行。
对于当前激活的坐标 (x,y) 方格(注意:矩阵的坐标从0开始,如第一行第一列的方格对应的坐标为(0,0),这很重要),设该方格内的数值为 w,变换规则如下:
若 w 为奇数:对当前格子执行左右双向交换操作。
若当前格子在第 1 列(无左侧格子):交换当前行最后一列格子与当前格子右侧相邻格子的值;
若当前格子在第 m 列(无右侧格子):交换当前行第一列格子与当前格子左侧相邻格子的值。
若 w 为偶数:对当前格子执行上下双向交换操作。
若当前格子在第 1 行(无上方格子):交换当前列最后一行格子与当前格子下方相邻格子的值;
若当前格子在第 n 行(无下方格子):交换当前列第一行格子与当前格子上方相邻格子的值。
Input
第一行两个正整数 n,m,分别表示矩阵有n行、m列。
接下来 n 行,每行 m 个整数,描述初始的二维矩阵。
接下来一行一个正整数 k,表示激活坐标的次数。
接下来 k 行,每行两个正整数 x,y,依次表示每次激活的方格坐标(x 行、y 列)。
Output
输出 n 行,每行 m 个整数,为所有激活操作执行完毕后的最终矩阵,相邻整数用单个空格分隔。
Examples
Input
5 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 2 2 0 3
Output
1 2 3 4 5 6 7 8 24 10 11 14 13 12 15 16 17 18 19 20 21 22 23 9 25
Hint
数据范围:5 \le n,m \le 100
数据点分布:
1、50% 数据满足: 0 < x < n-1,0 < y < m-1 2、50% 数据满足: 0 \le x < n, 0\le y < m