#396. [SCOI2010]序列操作

[SCOI2010]序列操作

题目描述

lxhgww 最近收到了一个 01 序列,序列里面包含了 nn 个数,这些数要么是 00,要么是 11,现在对于这个序列有五种变换操作和询问操作:

00 aa bb[a,b][a, b] 区间内的所有数全变成 00

11 aa bb[a,b][a, b] 区间内的所有数全变成 11

22 aa bb[a,b][a,b] 区间内的所有数全部取反,也就是说把所有的 00 变成 11,把所有的 11 变成 00

33 aa bb 询问 [a,b][a, b] 区间内总共有多少个 11

44 aa bb 询问 [a,b][a, b] 区间内最多有多少个连续的 11

对于每一种询问操作,lxhgww 都需要给出回答,聪明的程序员们,你们能帮助他吗?

输入格式

输入数据第一行包括 22 个数,nnmm ,分别表示序列的长度和操作数目

第二行包括 nn 个数,表示序列的初始状态

接下来 mm 行,每行 33 个数,opop , aa , bb ,(0op40 \le op \le 40ab<n0 \le a \le b \lt n)表示对于区间 [a,b][a, b] 执行标号为 opop 的操作

输出格式

对于每一个询问操作,输出一行,包括 11 个数,表示其对应的答案

样例

input

10 10
0 0 0 1 1 0 1 0 1 1
1 0 2
3 0 5
2 2 2
4 0 4
0 3 6
2 3 7
4 2 8
1 0 5
0 5 6
3 3 9

output

5
2
6
5

数据范围与提示

对于 30%30\% 的数据,1n,m10001 \le n, m \le 1000

对于 100%100\% 的数据,1n,m1000001 \le n, m \le 100000