AT_tenka1_2018_f Circular
Description
[problemUrl]: https://atcoder.jp/contests/tenka1-2018/tasks/tenka1_2018_f
整数 $ N $ 個からなる列 $ A_1,A_2,...,A_N $ が与えられます。
$ 1,2,...,N $ の並び替え $ p_1,p_2,...,p_N $ であって、 次の操作を何度か行うことでこの列を $ A_1,A_2,...,A_N $ に変換できるようなものの個数を $ 998244353 $ で割ったあまりを求めてください。
- 各 $ 1\leq\ i\leq\ N $ に対し、$ q_i=min(p_{i-1},p_{i}) $ とする。ただし、$ p_0=p_N $ とする。列 $ p $ を列 $ q $ で置き換える。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ A_1 $ $ : $ $ A_N $
Output Format
条件を満たす列の個数を $ 998244353 $ で割ったあまりを出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 3\ ×\ 10^5 $
- $ 1\ \leq\ A_i\ \leq\ N $
- 入力はすべて整数である
### Sample Explanation 1
$ (2,3,1),(3,2,1) $ が条件を満たします。