时间限制:2s
空间限制:512MB
题目描述
有一个长度为 n 的序列 a,你需要在里面选出一个波浪形子序列。
所谓“波浪形子序列”的定义是:设该子序列为 ai1,ai2,⋯,aik,其中 1≤i1<i2<⋯<ik≤n,则:
- 不存在 1≤j≤k−1,使得 aij=aij+1;
- 不存在 1≤j≤k−2,使得 aij<aij+1<aij+2;
- 不存在 1≤j≤k−2,使得 aij>aij+1>aij+2。
对于一个波浪形子序列,定义其权值为这样的 x 的个数:
- 存在 1≤j≤k−1,使得 ij<x<ij+1;
- 对于第一条所述的 j,aij<x<aij+1 或 aij>x>aij+1。
求所有波浪形子序列的权值之和。由于答案很大,请对 998244353 取模。
输入格式
第一行包含一个正整数 n。
第二行包含 n 个正整数 a1,a2,⋯,an。
输出格式
输出一行,包含一个整数,表示答案对 998244353 取模后的结果。
样例输入
5
4 2 3 1 5
样例输出
6
数据范围
对于所有数据,保证 1≤n≤106,1≤ai≤109。
| 测试点编号 |
n≤ |
特殊性质 |
| 1∼2 |
20 |
无 |
| 3∼4 |
106 |
保证 a 递增 |
| 5∼6 |
105 |
无 |
| 7∼10 |
106 |
提示
请注意使用较快的输入方式。