AT_arc114_b [ARC114B] Special Subsets
Description
[problemUrl]: https://atcoder.jp/contests/arc114/tasks/arc114_b
$ 1 $ 以上 $ N $ 以下の整数すべてから成る集合を $ S $ とします.
$ f $ は $ S $ から $ S $ への関数であり,$ f(1),\ f(2),\ \cdots,\ f(N) $ の値が $ f_1,\ f_2,\ \cdots,\ f_N $ として与えられます.
$ S $ の空でない部分集合 $ T $ であって,次の両方の条件を満たすものの個数を $ 998244353 $ で割った余りを求めてください.
- 全ての $ a\ \in\ T $ について $ f(a)\ \in\ T $ である.
- 全ての $ a,\ b\ \in\ T $ について $ a\ \neq\ b $ ならば $ f(a)\ \neq\ f(b) $ である.
Input Format
入力は以下の形式で標準入力から与えられる.
> $ N $ $ f_1 $ $ f_2 $ $ \ldots $ $ f_N $
Output Format
$ S $ の空でない部分集合であって,両方の条件を満たすものの個数を $ 998244353 $ で割った余りを出力せよ.
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
- $ 1\ \leq\ f_i\ \leq\ N $
- 入力は全て整数
### Sample Explanation 1
$ f(1)\ =\ 2,\ f(2)\ =\ 1 $ です.$ f(1)\ \neq\ f(2) $ であるため条件の $ 2 $ つ目は常に満たしますが,$ 1 $ つ目の条件より $ 1,\ 2 $ は同時に $ T $ に入っている必要があります.
### Sample Explanation 2
$ f(1)\ =\ f(2)\ =\ 1 $ です.$ 1 $ つ目の条件のため $ 1 $ は $ T $ に属する必要があり,さらに $ 2 $ つ目の条件により $ 2 $ は $ T $ に属することはできません.
### Sample Explanation 3
$ f(1)\ =\ 1,\ f(2)\ =\ 2,\ f(3)\ =\ 3 $ です.$ 1 $ つ目の条件も $ 2 $ つ目の条件も常に満たされるため,$ S $ の空でない部分集合全てが条件を満たします.