停车函数是 Konheim 和 Weiss 在研究哈希表的所谓线性探测冲突解决机制时引入的组合对象。作为一名数学狂热爱好者,Bobo 现在想要研究树上的停车函数。
考虑一个以树 $T$ 为形式的停车场,其顶点标签为 $[n] = \{1, 2, \dots, n\}$,根节点为顶点 $1$。树的边指向根节点。我们有 $n$ 个司机,每个司机都有他们偏好的停车位,即树上的一个顶点。司机依次到达,每个司机 $i$ ($1 \le i \le n$) 尝试停在他们偏好的位置 $s_i \in [n]$。如果该位置是空的,他们就停在那里。否则,他们会沿着边向根节点方向移动,并停在遇到的第一个空闲顶点上。如果没有空闲顶点,他们就会离开停车场(即树),无法停车。
如果所有司机都能成功找到停车位,则称序列 $s \in [n]^n$ 为树 $T$ 的停车函数。例如,对于以下具有两个顶点的树 $T$,共有三个停车函数,即 $(1, 2)$、$(2, 1)$ 和 $(2, 2)$。
现在,给定一棵具有 $n$ 个顶点的树 $T$,Bobo 想知道 $T$ 的停车函数数量。由于 Bobo 也痴迷于随机性,他决定树 $T$ 应按以下方式随机生成:
- 对于 $i = 2, \dots, n$,顶点 $i$ 指向的顶点是从 $\{1, 2, \dots, i - 1\}$ 中独立均匀随机选择的。
由于答案可能非常大,你需要输出答案对 $998\,244\,353$(一个质数)取模的结果。
输入格式
第一行包含一个整数 $n$ ($2 \le n \le 10^5$),表示树的大小。 下一行包含 $n - 1$ 个整数 $p_2, p_3, \dots, p_n$ ($1 \le p_i \le i - 1$),其中 $p_i$ 表示顶点 $i$ 在 $T$ 中指向的唯一顶点。你可以假设每个 $p_i$ 都是从 $\{1, 2, \dots, i - 1\}$ 中独立均匀随机选择的。
保证本题最多有 20 组测试数据。
输出格式
输出一行一个整数,表示 $T$ 的停车函数数量,对 $998\,244\,353$ 取模。
样例
输入格式 1
3 1 1
输出格式 1
12
输入格式 2
3 1 2
输出格式 2
16
输入格式 3
4 1 2 3
输出格式 3
125
输入格式 4
8 1 2 3 1 3 4 3
输出格式 4
1198736
输入格式 5
15 1 2 2 2 2 3 3 2 7 7 3 10 3 13
输出格式 5
938578089