luogu#P5142. 区间方差

区间方差

题目背景

出题人并没有能力写有趣的题面……

题目描述

对于一个长度为 nn 的序列 a1,a2,a3ana_1,a_2,a_3\cdots a_n,我们定义它的平均数 aa 为:

a=1ni=1naia=\frac{1}{n}\sum_{i=1}^{n}a_i

并定义它的方差 dd 为:

d=1ni=1n(aia)2d=\frac{1}{n}\sum_{i=1}^{n}(a_i-a)^2

现在给定一个长度为 nn 的序列 b1,b2bnb_1,b_2\cdots b_n。你需要支持两种操作。每种操作的格式为 c x y

c=1c=1,为修改操作,代表将 bxb_x 赋值为 yy

c=2c=2,为查询操作,代表查询 bxb_xbyb_y 的方差。

为了避免浮点数误差,请以分数取模形式输出结果(对 1000000007(109+710^9+7)取模)。

输入格式

第一行两个整数 n,mn,m,代表序列 bb 的长度为 nn,有 mm 个操作。

第二行 nn 个整数 bib_i,表示序列 bb 的初始值。

下面有 mm 行整数,每行格式为 c x y,含义如上文所示。保证所有操作合法。

输出格式

对于每个操作 2,输出一行。

4 8
0 0 0 0
1 1 1
1 2 2
1 3 3
1 4 4
2 1 1
2 1 2
2 1 3
2 1 4
0
250000002
666666672
250000003

提示

样例 1 解释

四次修改后,序列 bb 为:{1,2,3,4}\{1,2,3,4\}

区间 [1,1][1,1] 的方差为 00

区间 [1,2][1,2] 的方差为 14\frac{1}{4}44 的逆元为 250000002250000002

区间 [1,3][1,3] 的方差为 23\frac{2}{3}33 的逆元为 3333333363333333362×333333336modM=6666666722\times333333336\bmod M=666666672

数据规模与约定

  • 对于 50%50\% 的数据,n1000n\leq 1000m1000m\leq 1000
  • 对于 100%100\% 的数据,1n,m1×1051\leq n,m\leq 1\times 10^51bi1×1091\leq b_i\leq 1\times 10^91xn1\leq x\leq n。对于操作 1,1y1×1091\leq y\leq 1\times 10^9。对于操作2,xynx\leq y\leq n