#1435. [L2-4] 特殊子集

内存限制:512 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: wyhao

题目描述

S={1,2,3,...,N}S=\{1,2,3,...,N\}ffSSSS 上的一个映射,即 xS\forall x \in Sf(x)Sf(x)\in S

现在定义一个集合 TT 是特殊的,当且仅当:

(1) TST \subseteq STT 非空

(2) xT,f(x)T\forall x \in T, f(x) \in T

(3) x,yT (xy),f(x)f(y)\forall x,y \in T\ (x\not = y),f(x)\not = f(y)

现在给出 NN,求 TT 的个数对 998244353998244353 取模的结果。

输入格式

第一行是一个正整数 NN.

第二行有 NN 个正整数,第 ii 个数表示 f(i)f(i).

输出格式

仅一行,表示满足要求的 TT 的个数对 998244353998244353 取模的结果。

样例

样例1

输入

2
2 1

输出

1

样例解释

T={1,2}T=\{1,2\}.

样例2

输入

2
1 1

输出

1

样例解释

T={1}T=\{1\}.

样例3

输入

3
1 2 3

输出

7

样例解释

T={1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}T=\{1\},\{2\},\{3\},\{1,2\},\{1,3\},\{2,3\},\{1,2,3\}.

数据范围与提示

对于 30%30\% 的数据: 1N101\le N\le 10.

对于 50%50\% 的数据: 1N201\le N\le 20.

对于 100%100\% 的数据: 1N1051\le N\le 10^5.

数据保证 1f(i)N1\le f(i) \le N.