#CF438D. The Child and Sequence

The Child and Sequence

D. 孩子与序列

每个测试的时间限制:44
每个测试的内存限制:256256 MB
输入:标准输入
输出:标准输出

在儿童节那天,一个孩子来到了 Picks 的家,把他的房间弄得一团糟。Picks 非常生气。许多重要的东西都丢失了,尤其是 Picks 最喜欢的序列。

幸运的是,Picks 记得如何修复这个序列。首先,他需要创建一个整数数组 a[1],a[2],,a[n]a[1], a[2], \dots, a[n]。然后,他需要依次执行 mm 个操作。每个操作可以是以下三种之一:

  • 输出操作:给定 l,rl, r,Picks 需要计算并输出 i=lra[i]\sum_{i=l}^{r} a[i] 的值。
  • 取模操作:给定 l,r,xl, r, x,Picks 需要对每个 iilirl \le i \le r)执行赋值 a[i]=a[i]modxa[i] = a[i] \bmod x
  • 赋值操作:给定 k,xk, x,Picks 需要将 a[k]a[k] 的值设为 xx(即执行赋值 a[k]=xa[k] = x)。

你能帮助 Picks 完成这一系列操作吗?

输入

第一行包含两个整数 n,mn, m1n,m1051 \le n, m \le 10^5)。
第二行包含 nn 个整数,以空格分隔:a[1],a[2],,a[n]a[1], a[2], \dots, a[n]1a[i]1091 \le a[i] \le 10^9)——数组元素的初始值。

接下来的 mm 行中,每行以一个整数 typetype 开头:

  • 如果 type=1type = 1,则该行还有两个整数 l,rl, r1lrn1 \le l \le r \le n),对应操作 11
  • 如果 type=2type = 2,则该行还有三个整数 l,r,xl, r, x1lrn1 \le l \le r \le n1x1091 \le x \le 10^9),对应操作 22
  • 如果 type=3type = 3,则该行还有两个整数 k,xk, x1kn1 \le k \le n1x1091 \le x \le 10^9),对应操作 33

输出

对于每个操作 11,输出一行,包含对应的答案。注意答案可能超过 3232 位整数的范围。

示例

输入示例 1:

5 5
1 2 3 4 5
2 3 5 4
3 3 5
1 2 5
2 1 3 3
1 1 3

输出示例 1:

8
5

输入示例 2:

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

输出示例 2:

49
15
23
1
9

说明

考虑第一个测试用例:

  • 初始时,a={1,2,3,4,5}a = \{1, 2, 3, 4, 5\}
  • 执行操作 11 后,a={1,2,3,0,1}a = \{1, 2, 3, 0, 1\}
  • 执行操作 22 后,a={1,2,5,0,1}a = \{1, 2, 5, 0, 1\}
  • 执行操作 33 时,计算 2+5+0+1=82 + 5 + 0 + 1 = 8
  • 执行操作 44 后,a={1,2,2,0,1}a = \{1, 2, 2, 0, 1\}
  • 执行操作 55 时,计算 1+2+2=51 + 2 + 2 = 5