Semi-Permutations

2 secs 1024 MB
eSeF's icon eSeF

問題文

蝉のセミくんは、以下の条件を満たす数列 XX準順列 と定義することにしました。

  • ある 11 以上の整数 KK が存在して、数列 (1, 2,,K)(1,\ 2,\cdots ,K) から要素を1つだけ消去し、それを並び替えることによって XX を作ることができる。

なお、上記の定義から空の数列 ()() も準順列であることに注意してください。

長さ NN の数列 AA が与えられるので、AA の連続とは限らない部分列であって、準順列であるようなものの個数を 998244353998244353 で割ったあまりを求めてください。

入力

NN
A1    ANA_1\; \cdots\; A_N

制約

  • 1N1051\le N\le 10^5
  • 1AiN+11\le A_i\le N+1
  • 入力は全て整数

出力

答えを mod998244353\bmod{998244353} で出力してください。

入力例1

3
3 1 4

出力例1

4

()()(1)(1)(3,1)(3,1)(3,1,4)(3,1,4) の4つが準順列になっています。
例えば、(3,1)(3,1)K=3K=3 とし、(1,2,3)(1,2,3) から 22 を消去して並び替えることで得られます。

入力例2

4
3 4 3 5

出力例2

1

条件を満たす部分列は ()() のみです。

入力例3

17
5 2 7 7 1 6 3 1 5 3 6 1 6 3 4 2 4

出力例3

2511

Submit


Go (1.21)