Substring
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Description
你有一个字符串 ,其中每个字符是 0 或 1。你需要处理 条命令,每条命令是以下两种类型之一:
1 l r:将区间 内的每个字符设置为0。2 l r:将区间 内的每个字符设置为1。3 l r:翻转 的区间 内的每个字符(0变为1,1变为0)。4 l r:求子串 中互不相同的非空子序列数量,对 取模。
你需要处理所有命令,并对每个类型 4 的命令输出结果。
Constraints and Subtasks
对于所有测试数据,满足:
- ;
- 的长度为 ,且仅由
0和1构成; - ;
- 除字符串以外的输入为整数。
另外,还有一些测试点满足特殊要求。
| 分值 | 特殊性质 | ||
|---|---|---|---|
不存在操作 1、2、3 |
|||
不存在操作 4 |
|||
不存在操作 3 |
|||
不存在操作 1、2 |
|||
Input
输入格式如下:
$ \boxed{ \begin{aligned} & id \\ & n \quad q \\ & s \\ & t_1 \quad l_1 \quad r_1 \\ & t_2 \quad l_2 \quad r_2 \\ & \vdots \\ & t_q \quad l_q \quad r_q \\ \end{aligned} } $
其中 表示第 次操作的操作类型。
Output
对于每个类型 4 的命令,输出一行一个整数,表示区间内互不相同的子序列数量对 取模的结果。
Samples
6 5
110101
4 1 3
1 1 3
2 1 2
3 1 4
4 2 6
5
15
第一个操作要查询 110 中互不相同的非空子序列数量。
- 子序列 为
1; - 子序列 为
1; - 子序列 为
0; - 子序列 为
11; - 子序列 为
10; - 子序列 为
10; - 子序列 为
110;
互不相同的非空子序列有 1、0、11、10 和 110,所以答案为 。