#P1564. 计数(count)

计数(count)

题目描述

小 C 有一个元素两两不同的长度为 nn 的序列 AA

小 C 可以做若干次以下操作(可以不做):

  • 选择 1lrA1\le l\le r\le |A|A|A| 表示当前序列 AA 的元素个数),设 x=mini=lrAix=\min_{i=l}^r A_i,删除区间 [l,r][l,r] 中除最小值 xx 的其他所有元素,然后将序列 AA 中剩下的元素从左到右依次连接形成新的序列 AA^{'},最后 AAA\leftarrow A^{'}

小 C 想要知道对序列 AA 进行若干次操作后能够形成多少种不同的序列?由于答案可能很大,你只需要告诉小 C 答案对 998244353998244353 取模后的值。

输入格式

输入的第一行包含一个整数 nn

接下来一行包含 nn 个整数,第 ii 个整数表示 AiA_i

输出格式

共一行,输出一个整数。

样例输入 #1

2
2 1

样例输出 #1

2

样例输入 #2

4
2 4 1 3

样例输出 #2

6

数据范围

样例 1 解释

最后可能形成的序列如下:

[2,1][2,1][2][2]

  • 对于 20%20\% 的数据,保证 n5n\le 5
  • 对于 40%40\% 的数据,保证 n16n\le 16
  • 对于 60%60\% 的数据,保证 n500n\le 500
  • 对于 80%80\% 的数据,保证 n5000n\le 5000
  • 对于 100%100\% 的数据,保证 1n3×1051\le n\le 3\times 10^51Ai1091\le A_i\le 10^9,保证序列 AA 中元素两两不同。