問題文
1 以上 N 以下の整数すべてから成る集合を S とします.
f は S から S への関数であり,f(1),f(2),cdots,f(N) の値が f1,f2,cdots,fN として与えられます.
S の空でない部分集合 T であって,次の両方の条件を満たすものの個数を 998244353 で割った余りを求めてください.
-
全ての ainT について f(a)inT である.
-
全ての a,binT について aneqb ならば f(a)neqf(b) である.
制約
- 1leqNleq2times105
- 1leqfileqN
- 入力は全て整数
入力
入力は以下の形式で標準入力から与えられる.
N
f1 f2 ldots fN
出力
S の空でない部分集合であって,両方の条件を満たすものの個数を 998244353 で割った余りを出力せよ.
入力例 1
2
2 1
出力例 1
1
f(1)=2,f(2)=1 です.f(1)neqf(2) であるため条件の 2 つ目は常に満たしますが,1 つ目の条件より 1,2 は同時に T に入っている必要があります.
入力例 2
2
1 1
出力例 2
1
f(1)=f(2)=1 です.1 つ目の条件のため 1 は T に属する必要があり,さらに 2 つ目の条件により 2 は T に属することはできません.
入力例 3
3
1 2 3
出力例 3
7
f(1)=1,f(2)=2,f(3)=3 です.1 つ目の条件も 2 つ目の条件も常に満たされるため,S の空でない部分集合全てが条件を満たします.