『STA - R4』冰红茶

题目背景

![](https://cdn.luogu.com.cn/upload/image_hosting/sdchy9ah.png) 某编程网站 BTC 长期在它的 Beginner Contest 的最后一题放科技模板题,于是 APJifengc 愤怒地在它的评测机上洒了若干瓶冰红茶,导致一些评测单元的运行速度快了 $10^{12}$ 倍,暴力跑得和正解一样快。 因为 BTC 不能出科技模板题了,所以 BTC 的站长想要让你维护一下 APJifengc 每次洒冰红茶后可用的评测单元个数,以便于统筹评测资源与灾后重建。 **已加入 Hack 数据,位于 Subtask 5,不计分。**

题目描述

有 $n$ 个 bot 排成一排,每天所有 bot 都会喝冰红茶。 要求动态维护一排 bot,有三种操作或询问: - `1 l r k`,表示 $[l,r]$ 内的 bot 会喝 $k$ 瓶原味冰红茶、$[l,r]$ 外的 bot 会喝 $k$ 瓶热带风味冰红茶。 - `2 l r k`,表示 BTC 站长愤怒地把 $[l,r]$ 中最后连续喝了至少 $k$ 瓶口味相同的冰红茶的 bot 击毁。 - `3`,查询有多少个存活的 bot。 注:在 2 操作中,击毁不会改变 bot 的编号。

输入输出格式

输入格式


第一行两个正整数 $n,q$。 后 $q$ 行,每行描述一个操作或询问,形如以下三种中的一种: - `1 l r k`; - `2 l r k`; - `3`。

输出格式


若干行,每行回答一个询问 3。

输入输出样例

输入样例 #1

5 12
1 3 4 8
3
2 3 4 6
3
1 2 2 3
3
2 1 5 6
3
1 2 3 3
3
2 1 5 3
3

输出样例 #1

5
3
3
1
1
0

输入样例 #2

9 18
1 8 9 5
3
1 5 8 20
3
2 8 9 18
3
2 6 9 6
3
2 1 2 5
3
2 9 9 8
3
2 3 9 14
3
1 6 8 13
3
2 3 5 17
3

输出样例 #2

9
9
7
5
3
3
0
0
0

说明

### 样例 1 解释 只说明操作 1 和操作 2。 第一次操作,三号和四号 bot 喝了 8 瓶原味冰红茶,其他 bot 喝了 8 瓶热带风味冰红茶。 第二次操作,三号和四号 bot 连续喝了 8 瓶原味冰红茶,被击毁,现在场上还有 3 个存活 bot。 第三次操作,二号 bot 喝了 3 瓶原味冰红茶,其他 bot 喝了 3 瓶热带风味冰红茶。 第四次操作,一号和五号 bot 连续喝了 11 瓶热带风味冰红茶,被击毁,现在场上还有 1 个存活 bot。 第五次操作,二号 bot 喝了 3 瓶原味冰红茶。 第六次操作,二号 bot 连续喝了 6 瓶原味冰红茶,被击毁,现在场上没有存活的 bot。 ### 数据范围 **本题采用捆绑测试。** - Subtask 1 (5pts):$n,q\le 10^3$。 - Subtask 2 (20pts):所有操作 2 中 $k\le 20$。 - Subtask 3 (25pts):保证数据随机生成。 - Subtask 4 (50pts):无特殊限制。 其中 Subtask 3 的测试数据生成方式如下: 1. 对于每次或询问,从三种类型中等概率选择一个; 2. 若选取的操作不为 3,那么从 $\left[1, n\right]$ 中等概率生成两个数 $l, r$,若 $l > r$,则交换 $l, r$,并将 $l, r$ 作为操作的参数; 3. 若选取的操作不为 3,那么从 $\left[1, 10^6\right]$ 中等概率生成一个数 $k$ 作为操作的参数。 对于全部数据,保证 $1\le n,q\le 2\times 10^5$,$1\le k\le 10^{6}$。