3696 - 移数博弈
Description

小 A 和小 B 玩一个游戏,他们拥有一个数列。小 A 在数列中选出最大的那个数并移出,小 B 在剩下的数中选出最大的那个数并乘上小 A 的那个值,作为他的答案。
现在他们把该数列所有长度 >= 2 的区间(共 n*(n-1)/2 个)单独拿出来各做一次上述游戏,求小 B 所有答案之和,对 10^9+7 取模。
数列由 a[0]=a0, a[i]=(a[i-1]*a+b)%p 构造,数列下标为 1~n。
样例解释:数列 2 0 1 2,区间 [1,2] 答案 0、[1,3] 答案 2、[1,4] 答案 4、[2,3] 答案 0、[2,4] 答案 2、[3,4] 答案 2,和为 10。

Input

第一行五个数 n, a0, a, b, p(1 <= n, a0, a, b, p <= 10000000)。数列构造方法为 a[i]=(a[i-1]*a+b)%p,下标 1~n。

Output

一行,表示答案(对 10^9+7 取模)。

Examples

Input

4 1 1 1 3

Output

10
Hint

实质是求所有长度 >= 2 区间里(最大值 × 次大值)之和。可用单调栈/链表确定每个数作为次大值时的支配区间个数再乘上最大值。(本题评测数据 n<=1500,直接对每个起点枚举区间维护最大/次大即可)

Source
51nod 1589
Tags
题目参数
Time Limit 1 second
Memory Limit 128 MB
提交次数 0
通过次数 0