#1269. 【例题4】维护序列

【例题4】维护序列

当前没有测试数据。

【例题4】维护序列

题目描述

老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。

有长为nn的数列,不妨设为a1,a2,,ana_{1},a_{2},\cdots,a_{n}。有如下三种操作形式:

  1. 把数列中的一段数全部乘一个值;
  2. 把数列中的一段数全部加一个值;
  3. 询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模PP的值。

输入格式

第一行两个整数nnPP

第二行含有nn个非负整数,从左到右依次为a1,a2,,ana_{1},a_{2},\cdots,a_{n}

第三行有一个整数mm,表示操作总数;

从第四行开始每行描述一个操作,输入的操作有以下三种形式:

  • 操作111 t g c,表示把所有满足tigt \leq i \leq gaia_{i}改为ai×ca_{i} \times c
  • 操作222 t g c,表示把所有满足tigt \leq i \leq gaia_{i}改为ai+ca_{i} + c
  • 操作333 t g,询问所有满足tigt \leq i \leq gaia_{i}之和模PP的值。

输出格式

对每个操作33,按输入中出现的顺序,依次输出一行一个整数表示询问结果。

数据范围与提示

对于100%100\%的数据,1n,m1051 \leq n,m \leq 10^{5}1tg1051 \leq t \leq g \leq 10^{5}0c,ai1090 \leq c,a_{i} \leq 10^{9}1P1091 \leq P \leq 10^{9}

样例

7 43
1 2 3 4 5 6 7
5
1 2 5 5
3 2 4
2 3 7 9
3 1 3
3 4 7
2
35
8

说明

初始时数列为1,2,3,4,5,6,71,2,3,4,5,6,7

经过第11次操作后,数列为1,10,15,20,25,6,71,10,15,20,25,6,7

对第22次操作,和为10+15+20=4510+15+20=45,模4343的结果是2222

经过第33次操作后,数列为1,10,24,29,34,15,161,10,24,29,34,15,16

对第44次操作,和为1+10+24=351+10+24=35,模4343的结果是3535

对第55次操作,和为29+34+15+16=9429+34+15+16=94,模4343的结果是88