atcoder#ARC128D. [ARC128D] Neq Neq

[ARC128D] Neq Neq

配点 : 700700

問題文

NN 個のボールが一列に並べられており,左から順に 11 から NN までの番号がついています. ボール ii には整数 AiA_i が書かれています.

あなたは,以下の操作を好きなだけ繰り返すことができます.

  • 連続して並んでいる 33 つのボール x,y,zx,y,z (1x<y<zN1 \leq x < y < z \leq N) を選ぶ. ただしこの時,AxAyA_x \neq A_y かつ AyAzA_y \neq A_z を満たす必要がある. その後,ボール yy を食べる. なお,この操作の後,ボール xx とボール zz は列の中で連続しているとみなす.

最終的に残っているボールの集合としてありうるものの個数を 998244353998244353 で割った余りを求めてください.

制約

  • 2N2000002 \leq N \leq 200000
  • 1AiN1 \leq A_i \leq N
  • 入力される値はすべて整数である

入力

入力は以下の形式で標準入力から与えられる.

NN

A1A_1 A2A_2 \cdots ANA_N

出力

答えを出力せよ.

4
1 2 1 2
3

最終的に残っているボールの集合として考えられるのは,{1,2,3,4},{1,2,4},{1,3,4}\{1,2,3,4\},\{1,2,4\},\{1,3,4\}33 通りです.

5
5 4 3 2 1
8

異なる操作方法でも,最終的に残るボールの集合が同じであれば区別しません.

5
1 2 3 2 1
8

残るボールに書かれた整数を並べた列が同じでも,ボールの集合が異なる場合は区別されます.

9
1 4 2 2 9 6 9 6 6
14