atcoder#TENKA12018F. Circular

Circular

配点 : 900900

問題文

整数 NN 個からなる列 A1,A2,...,ANA_1,A_2,...,A_N が与えられます。

1,2,...,N1,2,...,N の並び替え p1,p2,...,pNp_1,p_2,...,p_N であって、 次の操作を何度か行うことでこの列を A1,A2,...,ANA_1,A_2,...,A_N に変換できるようなものの個数を 998244353998244353 で割ったあまりを求めてください。

  • 1iN1\leq i\leq N に対し、qi=min(pi1,pi)q_i=min(p_{i-1},p_{i}) とする。ただし、p0=pNp_0=p_N とする。列 pp を列 qq で置き換える。

制約

  • 1N3×1051 \leq N \leq 3 \times 10^5
  • 1AiN1 \leq A_i \leq N
  • 入力はすべて整数である

入力

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

NN

A1A_1

::

ANA_N

出力

条件を満たす列の個数を 998244353998244353 で割ったあまりを出力せよ。

3
1
2
1
2

(2,3,1),(3,2,1)(2,3,1),(3,2,1) が条件を満たします。

5
3
1
4
1
5
0
8
4
4
4
1
1
1
2
2
24
6
1
1
6
2
2
2
0