题目描述
Iahub 不喜欢背景故事,所以他会告诉你这个问题究竟在问什么。
给定一个 n 行 n 列的矩阵。最初,矩阵中所有的值都是零。行和列都是从 1 开始编号的,也就是行从 1,2,…,n 编号,列从 1,2,…,n 编号。我们用 i 行 j 列的元素表示为 ai, j。
我们将称满足两个不等式条件的元素 ai, j 的子矩阵为 (x0,y0,x1,y1),这两个不等式条件分别是: x0≤i≤x1,y0≤j≤y1。
编写一个程序执行以下两种操作:
1、Query(x0,y0,x1,y1):输出子矩阵 (x0,y0,x1,y1)元素的异或和。
2、Update(x0,y0,x1,y1,v):子矩阵 (x0,y0,x1,y1) 中的每个元素都与值 v 进行异或操作。
输入格式
第一行包含两个整数: n 和 m 。数字 m 表示需要执行的操作数。接下来的每一行包含五个或六个整数,取决于操作类型。
如果第 i 次操作是一个查询,第 i 行的第一个数字将为 1。它将后跟四个整数 x0,y0,x1,y1。
如果第 i 次操作是一个更新,第 i 行的第一个数字将为 2。它将后跟五个整数 x0,y0,x1,y1,v。
保证每次更新操作都满足以下不等式条件: 0≤v≤262。
保证每次操作都满足以下不等式条件: 1≤x0≤x1≤n,1≤y0≤y1≤n。
输出格式
对于每次查询操作,输出结果。
3 5
2 1 1 2 2 1
2 1 3 2 3 2
2 3 1 3 3 3
1 2 2 3 3
1 2 2 3 2
3
2
样例分析
经过前 3 次操作后,矩阵如下所示:
1 1 2
1 1 2
3 3 3
第四次操作要求我们计算 1 xor 2 xor 3 xor 3 = 3。
第五次操作要求我们计算 1 xor 3 = 2。
数据范围与提示
对于 100% 的数据:1≤n≤1000, 1≤m≤105。