现在有一个n行n列的矩阵。初始状态下,矩阵里的所有值都为0。行的编码是从1到n,列的编码也同样是从1到n.
ai, j.是在第i行第j列的数。子矩阵(x0, y0, x1, y1)是由ai, j. (x0 ≤ i ≤ x1, y0 ≤ j ≤ y1)组成的矩阵。
现在需要进行下列的两个操作:
1.查询(x0, y0, x1, y1):输出子矩阵(x0, y0, x1, y1)的异或和。
2.更新(x0, y0, x1, y1, v):将子矩阵(x0, y0, x1, y1)中的每一个数都异或上一个v
第一行包含两个数:n(1<=n<=1000),m(1<=m<=100000) m是需要操作的次数。
对于接下来的m行:
如果该行的第一个数是1,表示查询操作,后面是x0, y0, x1, y1.
如果该行的第一个数是2,表示更新操作,后面是x0, y0, x1, y1, v.
数据保证:1 ≤ x0 ≤ x1 ≤ n, 1 ≤ y0 ≤ y1 ≤ n ,0 ≤ v < 262
对于每一个查询操作,输出对应的结果,占单独的一行。
2 3 2 1 1 2 2 1 2 1 1 1 1 2 1 1 1 2 2
2 Note: 经过第一个操作得到 1 1 1 1 经过第二个操作得到 3 1 1 1 询问:3XOR1XOR1XOR1=2