#Lutece2143. 方差

方差

Migrated from Lutece 2143 方差

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

一天,蒟蒻forgottencsc正在做概率论与数理统计的复习题,然而潇神Eterna_Kingforgottencsc复习的时候用魔法把他书上的数据改了很多遍。连方差都不会算forgottencsc的考试在即,但是他想完成的复习题量却非常大,聪明的你能在时间限制内帮他及时完成复习计划吗?

forgottencsc不会做的那些题的形式都类似于:求出编号在[L,R][L,R]之间的所有样本 Xi(LiR)X_i(L \leq i \leq R)的方差S2S^2

因为他不会算除法,所以你需要输出方差乘上样本个数的平方并对109+710^9+7取模的结果。

如样本为1,2,31,2,3,那么你需要输出$[\frac{(1-2)^2+(2-2)^2+(3-2)^2}{3}\times3^2]\%(10^9+7)=6$。

Input

第一行有两个数N,QN,Q。意为总共有NN个样本并且下面有QQforgottencsc不会的复习题或潇神的修改。

第二行有NN个数,第ii个数aia_i即为第ii个样本的初始值。

接下来QQ行,每行第一个数为oo

o=1o=1时,接下来有三个数L,R,kL,R,k,代表潇神将编号在区间[L,R][L,R]内的样本全部加上了kk

o=2o=2时,接下来有三个数L,R,kL,R,k,代表潇神将编号在区间[L,R][L,R]内的样本全部乘上了kk

o=3o=3时,接下来有三个数L,R,kL,R,k,代表潇神将编号在区间[L,R][L,R]内的样本全部变成了kk

o=4o=4时,接下来有两个数L,RL,R,代表forgottencsc碰到了一道不会的题,此时你需要输出这个区间中的方差乘上这个区间中的样本个数的平方后对109+710^9+7取模的结果。由方差公式易知,结果必为一个非负整数。

Output

对于每一道forgottencsc不会的题,即o=4o=4的询问,输出相应的结果。

Samples

3 4
0 0 0
1 1 3 1
2 2 3 2
3 3 3 3
4 1 3
6

Constraints

1N,Q1051\leq N,Q\leq 10^5

0ai,k1090\leq a_i,k \leq 10^9

对每个问题/修改有:

1LRN1 \leq L \leq R \leq N

1o41 \leq o \leq 4

Note

想一想,三种修改操作就一定要三种懒标记吗?

注意:本题中的方差定义与教科书或维基百科中的方差定义可能存在区别!

以下为本题中方差的定义:

$\displaystyle S^2=\frac{1}{n}\left[\sum_{i=1}^{n}{(X_i-\bar{X})^2}\right]$

$\displaystyle \bar{X}=\frac{1}{n}\sum_{i=1}^{n}{X_i}$

Resources

2019 UESTC ACM Training for Data Structures