库存批次调价

提高-⏱ 1000ms💾 256MB#P7097🏷️ 线段树

题目描述

仓库有 $n$ 个货格排成一行,初始各有存货量 $a_i$。三种操作:

  • 1 t g c:区间 $[t, g]$ 每格存货量乘以 $c$;
  • 2 t g c:区间 $[t, g]$ 每格存货量加 $c$;
  • 3 t g:询问 $[t, g]$ 存货量之和 mod $P$。

对每个询问操作输出结果。所有乘法与加法均在 mod $P$ 意义下执行。

输入格式

第一行两个整数 $n$ 和 $P$; 第二行 $n$ 个非负整数 $a_1 \ldots a_n$; 第三行一个整数 $M$; 接下来 $M$ 行,每行为 1 t g c、2 t g c 或 3 t g。

输出格式

对每个询问操作输出一行一个整数。

数据范围

$$1 \le n, M \le 3000$$
,
$$1 \le P \le 10^9$$
,
$$0 \le a_i, c < P$$
。

样例输入 #1
4 1000
1 2 3 4
6
3 1 4
2 2 3 5
1 1 4 2
3 2 4
1 1 1 3
3 1 1
样例输出 #1
10
38
6
样例输入 #2
1 100
7
4
1 1 1 5
3 1 1
2 1 1 0
3 1 1
样例输出 #2
35
35