智乃酱的静态数组维护问题多项式
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

智乃在学习了前缀和以后,学会了先进行若干次区间加数操作,然后进行若干次查询,每次查一段的区间和。
现在有一个长度大小为的数组,数组中有一些非负整数,请你完成区间加若干次多项式的操作,最后进行若干次区间查询和的操作。

具体来讲,接下来会进行次修改操作,每次将会给你一个次多项式,以及一段需要操作的目标数组区间
然后你需要对以此类推,也就是对目标区间的第一个数字加上一个,第二个数字加上...

在做完这些操作以后,还会进行次查询操作,每次查询一段的区间元素和,因为这个数字可能很大,你只用输出其对取余数后的结果即可。

输入描述:

第一行输入三个正整数
接下来一行输入个数字表示数组元素的初始值。

接下来行,每行首先输入三个整数表示需要操作的区间,以及多项式的最高次数为次。
然后不换行,还是在该行后面继续输入个非负整数,表示多项式为

接下来行,每行输入两个正整数,表示查询元素和的查询区间。

输出描述:

对于每一个查询区间,输出的区间元素和,对取余数后的结果。
示例1

输入

复制
10 2 11
1000 1000 1000 100000 1000 1000 10000 10000 10000 100000
1 10 0 100
1 10 1 1 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
1 10

输出

复制
1101
1102
1103
100104
1105
1106
10107
10108
10109
100110
236055