#abc252g. [abc252_g]Pre-Order

[abc252_g]Pre-Order

题目描述

有一棵根为第 11 个顶点的具有 NN 个顶点的树。

我们从根开始进行深度优先搜索,并得到了一次前序遍历的结果: P1,P2,,PNP_1, P_2, \ldots, P_N
在搜索过程中,当当前顶点有多个子节点时,我们选择索引最小的尚未访问的顶点。

什么是前序遍历?

我们从根开始并重复以下过程来列出树的顶点。

  • 如果当前顶点 uu 还未记录,则记录它。
  • 然后,如果 uu 有一个未访问的顶点,则进入该顶点。
  • 否则,如果 uu 是根节点,则终止;否则,进入 uu 的父节点。 这里记录的顶点顺序即为树的前序遍历结果。

求与给定前序遍历结果一致的根为第 11 个顶点的树的数量,对 998244353998244353 取模。
若两棵根为第 11 个顶点的树(具有 NN 个顶点)存在某个非根顶点在两棵树中的父节点不同,则认为这两棵树是不同的树。

约束条件

  • 2N5002 \leq N \leq 500
  • 1PiN1 \leq P_i \leq N
  • P1=1P_1=1
  • 所有 PiP_i 互不相同
  • 输入中的所有值都是整数。

输入

从标准输入读入数据,输入格式如下:

NN P1P_1 P2P_2 \ldots PNP_N

输出

打印与给定前序遍历结果一致的根为第 11 个顶点的树的数量,对 998244353998244353 取模。

示例输入 1

4
1 2 4 3

示例输出 1

3

与前序遍历结果一致的根为第 11 个顶点的树有以下三棵,因此答案为 33

请注意,下面的树不算在内。这是因为在顶点 22 的子节点中,我们先访问了顶点 33 而后访问了顶点 44,导致了前序遍历结果 1,2,3,41,2,3,4

示例输入 2

8
1 2 3 5 6 7 8 4

示例输出 2

202