题目背景
myz 很喜欢玩一款病毒游戏。
题目描述
在这个游戏里,一开始有 n 个病毒,每个病毒的危害值为 1。
每隔一段时间,病毒就会变异,会分裂成两个病毒,右边的病毒会比左边的病毒危害值多 1,变异过的病毒不会再变异。
每个病毒有个变异极限 bi,当这个病毒变异到 bi 时,这个病毒就会停止变异。也就是说,第 i 个病毒最后都会分裂成一个危害值为 {1,2,3,…,bi} 的病毒序列,当所有病毒变异完时,游戏开始,最终变异完的序列是 {1,2,3,…,b1,1,2,3,…,b2,…,1,2,3,…,bn}。
每次游戏,系统会选择一个区间,myz 需要把这个区间的病毒全部杀死,如果这个区间内的病毒的危害值的最大值是 x,那么 myz 需要花费 x 的能量才能消灭它们。
因为不知道系统会选择哪个区间,myz 想知道每个区间需要消耗的能量值之和。
由于答案太大了,myz 想让你把答案对 998244353 取模。
输入格式
第一行有一个整数 n,表示最开始有 n 个病毒。
第二行有 n 个整数,第 i 个整数是 bi,表示第 i 个病毒的变异上限。
输出格式
一个整数,表示 myz 需要消耗的能量值之和,答案对 998244353 取模。
提示
样例解释
第一个样例,病毒最后分裂成 {1,2,1,2,3},区间 [1,1],[1,2],[1,3],[1,4],[1,5],[2,2],[2,3],[2,4],[2,5],[3,3],[3,4],[3,5],[4,4],[4,5],[5,5] 的最小代价和就是 1+2+2+2+3+2+2+2+3+1+2+3+2+3+3=33。
数据范围
本题采用捆绑测试。
subtask 编号 |
n≤ |
bi≤ |
特殊性质 |
分值 |
1 |
102 |
102 |
无 |
20 |
2 |
104 |
3 |
106 |
109 |
A |
4 |
无 |
40 |
特殊性质 A: b1≤b2≤…≤bn。
对于 100% 的数据,保证 1≤n≤106,1≤bi≤109。