题目描述
生活在雾之湖的冰精琪露诺,向来以智慧而著称。作为寺子屋的老学员,琪露诺可是对数学递推式了如指掌。
有一天,慧音老师想要考一考琪露诺。于是她写出了一个长度为 m 的递推公式:
Ft=i=1∑mKi×Ft−i(t>m)
其中 m,{Ki} 都是被给定的。不过,由于这个序列 {Fi} 的初始 m 项并没有被确定,所以可能存在无穷个满足这个递推式,但是初始 m 项并不一致的递推数列。慧音打算选择其中 q 个 F ,来考考琪露诺对数列知识的掌握。
具体而言,慧音会依次告诉琪露诺,若干个 {Fi} 的起始 m 项。显然,这样就能生成无穷序列 {Fi} 了。尽管如此,生成这么多序列并不好玩。于是慧音又创造了一个答案序列 {Ai} ,满足初始时 Ai=0 。
每当给出一个新的 {Fi} ,慧音都要琪露诺使 {Ai} 的第 a,a+1,⋯b−1,b 项分别加上 F1,F2,F3,⋯,Fb−a+1 。
当然,慧音老师不想为难琪露诺,于是对于所有数字,只要输出其对 p 取模的值即可。其中 p 是一个被给定的常数。
形式化地讲述题面:给定 n,q,m,p,{K1,K2,⋯,Km} 。有 q 次操作,每次给定一组 a,b,{G1,G2⋯Gm} ,求出无穷序列 {Fi} :
Ft={Gt∑i=1mKiFt−it≤mt>m然后令 ∀i∈[a,b],Ai←Ai+Fi−a+1 。最后分别输出 {Ai} 的前 n 项对 p 取模后的结果。
输入格式
-
第一行有四个正整数 n,q,m,p ,含义如题面所示。
-
第二行有 m 个整数 {K1,K2,⋯,Km} ,表示递推式中的系数。
-
接下来 q 行,每行 2+m 个整数 a,b,{G1,G2,⋯Gm} ,描述一次操作。
输出格式
- 共一行, n 个整数,输出 Aimodp 的值。
提示
样例解释
对于样例 1 :
-
初始时, {Ai}={0,0,0,0,0}。
-
第一步生成了一个 {Fi}={1,1,2,3,5} ,加至 A1,A2,A3,此时 {Ai}={1,1,2,0,0}。
-
第二步生成了一个 {Fi}={1,1,2,3,5} ,加至 A2,A3,⋯,A5,此时 {Ai}={1,2,3,2,3}。
-
第三步生成了一个 {Fi}={2,0,2,2,4} ,加至 A1,A2,⋯,A5,此时 {Ai}={3,2,5,4,7}。
对于样例 2 ,我们既没有一个绝妙的解释,又没有足够大的空间,于是我们写不下了。
数据范围及约定
Subtask1234nn≤104n≤105n≤105无特殊限制mm≤10m=1m=2无特殊限制qq≤103q≤105q≤105无特殊限制分值10202050
- 对于 100% 的数据,满足 1≤n≤1×106;1≤q≤1.2×105;1≤m≤15;1≤Ki,Gi,p≤108;1≤a≤b≤n 。