U93805 生存战略(survive)
题目背景
```
我讨厌「命运」这个词
出生 相遇 离别
成功和失败 人生的幸运和不幸
如果这些都是由命运事先决定好了的话
那我们又是为何而生的呢
在富裕家庭里出生的人
由漂亮妈妈生下来的人
正逢饥荒和战争时期出生的人
如果这一切都是命运
那神明可就太不讲道理 太残酷了
从那时开始 我们就没有未来
因为我们深知 自己必将一事无成
《回转企鹅罐》
```
题目描述
给你一个 $n\times m$ 的矩阵从上往下行数递增,从左到右列数递增,对它进行 $q$ 次操作:
1. 给 $x_1, y_1, x_2, y_2, v$,将 $x_1\le x\le x_2, y_1\le y\le y_2$ 部分的数都加上 $v$。
2. 给出 $x_1, y_1, l, t$,将 $x_1 \le x \le x_1 + l, y_1\le y\le y_1 + l$ 位置的正方形内部的数逆时针旋转 $t\times 90^\circ$。
**有个数据点里有 $opt=0$ 的情况,请当做 $opt=2$ 处理**
请你输出操作结束后的矩阵。
矩阵内的数均对 $2^{32}$ 取模,这意味着你可以使用 `unsigned int` 进行计算。
输入格式
第一行输入四个数 $n, m, q, \mathrm{lim}$
接下来 $q$ 行输入每行第一个数 $opt$ 表示操作类型,然后对应该操作类型输入对应的参数。
输出格式
为了降低输出量,输出 $\mathrm{lim}$ 个数。
假设将矩阵的数第 $i$ 行第 $j$ 列为 `a[i][j]`,令
```cpp
output[((i - 1) * m + j - 1) % lim] ^= a[i][j] + ((i - 1) * m + j - 1) / lim
```
输出数组 `output[0], output[1], ... output[lim - 1]` 即可。
说明/提示
#### 样例 1 解释
第一次操作:
```plain
0 0 0 0
0 1 1 1
0 1 1 1
0 1 1 1
```
第二次操作:
```plain
0 0 0 0
0 1 1 1
1 1 1 1
0 0 1 1
```
#### 数据范围
空间限制:$512\texttt{MB}$
时间限制:$2\texttt{s}$
对于 $100\%$ 的数据,保证 $1\le n, m, q\le 2,000, \mathrm{lim} = \min(nm, 10^5)$。
| 测试点 | $n,m$ | 特殊性质 |
| :-------: | :------: | :----------------------: |
| $1,2$ | $\le100$ | |
| $3,4,5,6$ | $\le600$ | |
| $7,8$ | | 没有操作 2 |
| $9$ | | 所有操作 1 在操作 2 之前 |
| $10$ | | |
空的地方表示没有额外限制。
#### 提示
这是一道低级数据结构题。