当前没有测试数据。
    
                      题目背景
[CENSORED]!
在 Lobotomy Corporation 中,X 需要监控多个收容单元中异想体的 Cogito 波动。
每个收容单元的 Cogito 值会随时间变化,作为主管,X 需要快速处理 Cogito 波动事件并实时查询单元状态。
题目描述
有 n 个收容单元排成一排,编号从 1 到 n。每个单元 i 初始 Cogito 值为 ai。系统会进行以下操作:
- 
1 l r k d:对区间 [l,r] 内的单元施加等差 Cogito 波动。具体来说:
 
- 第 l 个单元 Cogito 增加 k
- 第 l+1 个单元 Cogito 增加 k+d
- 第 l+2 个单元 Cogito 增加 k+2×d
- ⋯
- 第 r 个单元能量增加 k+(r−l)×d
 
- 
2 l r:查询区间 [l,r] 内所有单元当前 Cogito 值的总和。
 
- 
3 x:查询第 x 个单元当前的 Cogito 值。
 
查询结果请对 109+7 取模。
输入格式
第一行两个整数 n,m。
第二行 n 个整数 ai。
接下来 m 行,每行一个操作。
输出格式
对于每个操作 2 或 3,输出一行答案,由于结果可能非常大或非常小,请对 109+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,2,3,4,5}。以下省略取模过程。 
- 
a2+1=3,a3+1+2=6,a4+1+2×2=9。 
- 
a1+a2+a3=10。 
- 
a3=6。 
- 
a1+0=1,a2+0+(−1)=2,a3+0+2×(−1)=4,a4+0+3×(−1)=6,a5+0+4×(−1)=1。 
- 
a1+a2+a3+a4+a5=14. 
- 
a2=2。 
【数据范围与约定】
对于 100% 的数据,1≤n,m≤105,1≤∣ai∣,∣k∣,∣d∣≤109,1≤l≤r≤n,1≤x≤n。