#Y0016. 异想体管理

异想体管理

当前没有测试数据。

题目背景

[CENSORED]\small{\rm{\color{red}{[CENSORED]}}}

在 Lobotomy Corporation 中,X 需要监控多个收容单元中异想体的 Cogito 波动。

每个收容单元的 Cogito 值会随时间变化,作为主管,X 需要快速处理 Cogito 波动事件并实时查询单元状态。

题目描述

nn 个收容单元排成一排,编号从 11nn。每个单元 ii 初始 Cogito 值为 aia_i。系统会进行以下操作:

  • 1 l r k d:对区间 [l,r][l,r] 内的单元施加等差 Cogito 波动。具体来说:

    • ll 个单元 Cogito 增加 kk
    • l+1l+1 个单元 Cogito 增加 k+dk+d
    • l+2l+2 个单元 Cogito 增加 k+2×dk+2\times d
    • \cdots
    • rr 个单元能量增加 k+(rl)×dk+(r-l)\times d
  • 2 l r:查询区间 [l,r][l,r] 内所有单元当前 Cogito 值的总和。

  • 3 x:查询第 xx 个单元当前的 Cogito 值。

查询结果请对 109+710^9+7 取模。

输入格式

第一行两个整数 n,mn,m

第二行 nn 个整数 aia_i

接下来 mm 行,每行一个操作。

输出格式

对于每个操作 2233,输出一行答案,由于结果可能非常大或非常小,请对 109+710^9+7 取模。

输入输出样例

5 6
1 2 3 4 5
1 2 4 1 2
2 1 3
3 3
1 1 5 0 -1
2 1 5
3 2
10
6
14
2

说明 / 提示

【样例解释】

  1. 初始状态:{1,2,3,4,5}\{1,2,3,4,5\}。以下省略取模过程。

  2. a2+1=3,a3+1+2=6,a4+1+2×2=9a_2+1=3,a_3+1+2=6,a_4+1+2\times2=9

  3. a1+a2+a3=10a_1+a_2+a_3=10

  4. a3=6a_3=6

  5. a1+0=1,a2+0+(1)=2,a_1+0=1,a_2+0+(-1)=2,a3+0+2×(1)=4,a4+0+3×(1)=6,a_3+0+2\times(-1)=4,a_4+0+3\times(-1)=6,a5+0+4×(1)=1a_5+0+4\times(-1)=1

  6. a1+a2+a3+a4+a5=14a_1+a_2+a_3+a_4+a_5=14.

  7. a2=2a_2=2

【数据范围与约定】

对于 100%100\% 的数据,1n,m105,1ai,k,d109,1 \le n,m \le 10^5,1 \le |a_i|,|k|,|d| \le 10^9,1lrn,1xn1 \le l \le r \le n,1 \le x \le n