Koyuki 通过出售梦境转移器赚到了一大笔钱,只可惜她在走廊里不慎撞到了拿着咖啡的 Noa,导致 Noa 手上的文件洒满了咖啡。更严重的是,这些文件是 Noa 特意为老师准备的。现在,她决定没收 Koyuki 的所得,并要求她完成下面的题目。
Noa 定义一个长度为 ϵ+1ϵ+1 的非负整数序列 aδ,aδ+1,aδ+2,⋯,aδ+ϵaδ,aδ+1,aδ+2,⋯,aδ+ϵ(δδ 为非负整数)是一个 咖啡序列 当且仅当所有整数 ii(0≤i≤ϵ0≤i≤ϵ)均满足其在序列中的出现次数恰好为 aδ+iaδ+i。
她给定了一个长度为 nn 的非负整数序列 b1,b2,b3,⋯,bnb1,b2,b3,⋯,bn,并要求 Koyuki 完成 qq 次操作。每次操作形如:
Koyuki 注意到身旁的你正在打程序设计竞赛,于是顺手将题目扔给了你。当你转过头时,只隐约看见她跑去的背影。Noa 向你道了歉,并保证假如你做出了这道题目,她就会带 Koyuki 亲自来道歉。
本题包含多组测试数据。
来自 Noa 的温馨提示:本题输入输出量较大,对于使用 C++ 语言参加竞赛的选手,强烈建议使用关闭同步流的 cin 和 cout 完成输入输出。
首先在第一行输入一个整数 TT(1≤T≤101≤T≤10)表示测试数据组数。
对于每一组测试数据,输入包含 q+2q+2 行。
第一行包含两个整数 n,qn,q(1≤n,q≤2×1051≤n,q≤2×105),分别表示序列的长度和操作的次数。
第二行包含 nn 个整数 b1,b2,b3,⋯,bnb1,b2,b3,⋯,bn(0≤b1,b2,b3,⋯,bn≤n0≤b1,b2,b3,⋯,bn≤n)表示序列的元素。
接下来 qq 行,每行首先包含一个整数 opop(1≤op≤21≤op≤2)表示操作的类型,接下来包含两个整数 x,px,p 或 l,rl,r 表示一次操作。
保证在所有操作 1 中,op=1op=1,1≤x≤n1≤x≤n,0≤p≤n0≤p≤n。保证在所有操作 2 中,op=2op=2,1≤l≤r≤n1≤l≤r≤n。
1
12 8
2 1 2 0 0 3 2 1 1 0 0 0
2 1 4
2 1 5
2 1 6
2 1 10
2 1 12
2 6 12
1 2 0
2 1 4
0
5
5
5
7
7
4
在样例的测试数据中,共有 88 次操作: