NIT的数据结构
题号:NC219773
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

NIT 在 n 年前还是普及组选手的时候做过这样一个题目,维护一个数据结构,支持区间加,区间查询和,以NIT现在国家队的实力,做这样的题实在是太侮辱他的智商了,于是他思考着加强这道题目。

他给了你一个长度为 n 序列的  和一个区间集合,开始序列全为0,区间集合只含有一个元素 ,编号为 1,即 ,你需要维护以下操作:

  1. 给定  ,将满足  的 i,  。
  2. 给定  ,将满足  的 i,
  3. 给定 ,查询区间
  4. 给定 ,将区间  编号为 ,并将其加入区间集合。 要异或 
  5. 给定 ,将  从区间集合中删除。
保证操作合法。操作 4 的  可能重复出现,但不会加入集合内已有的编号。
保证集合内的区间只有包含或相离关系且任意两个区间的任意端点都不相同。

特别地,单点算作一个区间。

只对操作4的  进行强制在线处理。即操作4的  要异或  

输入描述:

第一行两个正整数 

接下来  行,每行表示一个操作,操作均合法。

输出描述:

对于每一个3操作,输出一个整数。
示例1

输入

复制
5 5
4 2 4 2
4 3 3 3
1 2 3
3 2 3
3 1 5

输出

复制
3
6

说明

第三次操作:
示例2

输入

复制
10 11
4 4 4 5
4 3 5 3
4 7 8 4
1 4 1
4 2 9 2
2 2 1
3 1 3
3 2 5
3 4 7
3 8 8
3 9 9

输出

复制
1
3
4
2
0

说明

第四次操作:第五次操作:

示例3

输入

复制
20 20
4 2 4 2
4 6 18 3
4 7 10 4
1 4 1
5 4
4 8 12 5
1 5 1
2 3 1
4 10 11 6
2 5 1
1 2 3
5 2
5 3
2 5 1
3 1 3
3 4 6
3 7 9
3 10 12
3 13 15
3 16 18

输出

复制
6
3
7
11
0
0

说明

第四次操作:第七次操作:第八次操作:第十次操作:第十一次操作:第十四次操作:
示例4

输入

复制
5 7
4 2 4 2
1 2 2
3 2 4
4 5 5 3
1 3 1
3 2 3
3 1 5

输出

复制
6
5
7

说明

提示这是一道强制在线的题,读入量可能较大,请使用较快的读入方式。

备注:

对于100%的数据,有