和积和III

和积和III

题目描述

给定拥有nn个数的序列AA。定义f(k)f(k)表示在序列AA中找出拥有kk个元素的子序列(元素相同但位置不同的算多次),并将它们的积求和。
例如,当A=A={2,3,42,3,4},f(2)=26f(2)=26。原因如下: 所有的长度为22的子序列共有3个,分别是{2,32,3},{2,42,4},{3,43,4},它们的乘积之和为2×3+2×4+3×4=262\times3+2\times4+3\times4=26
现在,凉心的Ducati会qq次询问你l=xyr=lyi=lrf(i)\sum_{l=x}^y\sum_{r=l}^y\sum_{i=l}^{r}f(i)的值。这个式子的值等价于如下伪代码片段:

for l=x~y
    for r=l~y
        for i=l~r
            f(i)的和;

由于答案可能过大,请将答案对1000000007(109+7)1000000007(10^9+7)取模。

输入格式

第一行输入nnqq,表示序列中元素的个数与询问的次数。
第二行输入nn个数,表示序列AAnn个元素。
下面输入qq行,每行两个整数xxyy,表示询问l=xyr=lyi=lrf(i)\sum_{l=x}^y\sum_{r=l}^y\sum_{i=l}^{r}f(i)的值。

输出格式

输出qq行,第ii行为第ii个询问的答案。

输入输出样例

输入

3 2
1 2 3
1 1
2 3

输出

6
34

样例解释

首先,得到f(1)=6,f(2)=11,f(3)=6f(1)=6,f(2)=11,f(3)=6
第一个询问是求f(1)f(1),即66
第二个询问是求f(2)+(f(2)+f(3))+f(3)f(2)+(f(2)+f(3))+f(3),即3434

数据范围

对于100%的数据,1n,q10001\le n,q\le10001ai1091\le a_i≤10^9xyx\le y
Subtask 1(10%): x=yx=y
Subtask 2(20%): n,q5n,q\le5
Subtask 3(20%): n,q100n,q\le100
Subtask 4(10%): ai1000a_i≤1000
Subtask 5(40%): 无特殊限制。

贡献者

题面:Ducati
数据,核题:b6e0

信息

ID
1014
难度
4
分类
(无)
标签
递交数
3
已通过
1
通过率
33%
被复制
1
上传者