「FSLOI Round I」山峦

题目背景

**[English statement.](https://www.luogu.com.cn/problem/T501030) You must submit your code at the Chinese version of the statement.** 山峦是造物主弃的酒杯。

题目描述

如果一个长度至少为三的序列 $a$ 满足以下条件,则称其为一个**山峰**: - 设其长度为 $m$。存在一个 $x$,满足 $2\leq x \leq m-1$,并且使得 $a_1,a_2,\cdots,a_x$ 严格单调递增,$a_x,a_{x+1},\cdots,a_m$ 严格单调递减。 特别地,称 $a_x$ 为这个山峰的高度。 如果一个序列 $b$ 满足以下任一条件,则称其为一个**山峦**: - $b$ 序列是一个**山峰**。 - 可以拆成至少两个连续的子序列,使得每个子序列都是**山峰**,且从左到右**山峰的高度**严格单调递增。 比如,序列 $\lbrace 2,4,3,1,5,2,1 \rbrace$ 是山峦,因为其可以拆分为 $\lbrace 2,4,3 \rbrace,\lbrace 1,5,2,1 \rbrace$ 两个山峰,且山峰高度严格递增。而序列 $\lbrace 2,4,3,5,2,1 \rbrace$ 不是山峦,因为其无法拆分成至少两个连续的子序列,使得每个子序列都是山峰。 现在给定一个长度为 $n$ 的序列 $a$,小 F 想知道,在 $a$ 的所有子序列中,有多少个是**山峦**。由于答案可能很大,请输出其对 $998244353$ 取余后的结果。 请注意,在本题中,即使子序列的元素相同,只要子序列的元素在 $a$ 中的位置不同,仍算作不同的子序列。

输入输出格式

输入格式


共两行。 第一行一个整数 $n$,表示序列长度。 第二行 $n$ 个整数 $a_1,a_2,\cdots,a_n$,表示 $a$ 序列。

输出格式


共一行。 一个整数,表示是山峦的子序列数量对 $998244353$ 取余的结果。

输入输出样例

输入样例 #1

4
1 2 2 1

输出样例 #1

2

输入样例 #2

7
2 4 3 1 5 2 1

输出样例 #2

35

输入样例 #3

20
2 3 5 6 8 7 6 5 6 7 8 8 8 8 4 3 5 6 7 4

输出样例 #3

15085

说明

**【样例 1 解释】** 由 $a_1,a_2,a_4$ 构成的子序列是山峦,由 $a_1,a_3,a_4$ 构成的子序列是山峦。 **【数据规模与约定】** **本题采用捆绑测试。** 对于 $100 \%$ 的数据,保证: - $1 \leq n \leq 500$ - $1 \leq a_i \leq 10^6$ |子任务|分值|特殊性质| |:-----:|:-----:|:-----:| |$1$|$10$|$n \leq 18$| |$2$|$15$|$n \leq 80$| |$3$|$15$|$A$| |$4$|$20$|$B$| |$5$|$40$|无| 特殊性质 $A$:序列 $a$ 是山峰。 特殊性质 $B$:序列 $a$ 中的元素互不相同。