题目描述
给定一个由 1 到 N 的所有整数组成的集合 S。
f 是从 S 到 S 的函数。已知函数值 f(1),f(2),cdots,f(N) 分别为 f1,f2,cdots,fN。
找到满足以下两个条件的非空子集 T 的数量(对 998244353 取模):
- 对于每个 ainT,f(a)inT。
- 对于每对 a,binT,如果 aneqb,则 f(a)neqf(b)。
约束条件
- 1leqNleq2times105
- 1leqfileqN
- 输入中的所有值都是整数。
输入
输入格式如下,从标准输入中给出:
N
f1 f2 ldots fN
输出
打印满足条件的非空子集 T 的数量,对 998244353 取模。
示例输入1
2
2 1
示例输出1
1
我们有 f(1)=2,f(2)=1。由于 f(1)neqf(2),第二个条件总是满足的,但是第一个条件要求 T 同时包含 1 和 2。
示例输入2
2
1 1
示例输出2
1
我们有 f(1)=f(2)=1。第一个条件要求 T 包含 1,但是第二个条件禁止 T 包含 2。
示例输入3
3
1 2 3
示例输出3
7
我们有 f(1)=1,f(2)=2,f(3)=3。两个条件总是满足的,所以所有非空子集 T 都满足条件。