#AT2179. G - Pre-Order

G - Pre-Order

当前没有测试数据。

G - Pre-Order

Score : $600$ points

Problem Statement

There is a rooted tree with $N$ vertices called Vertex $1$, $2$, $\ldots$, $N$, rooted at Vertex $1$.

We performed a depth-first search starting at the root and obtained a preorder traversal of the tree: $P_1, P_2, \ldots, P_N$.
During the search, when the current vertex had multiple children, we chose the unvisited vertex with the smallest index.

What is a preorder traversal?

We start at the root and repeat the following procedure to list the vertices of the tree.

<li> If the current vertex $u$ is not recorded yet, record it. </li> <li> Then, if $u$ has an unvisited vertex, go to that vertex.</li> <li> Otherwise, terminate if $u$ is the root, and go to the parent of $u$ if it is not. </li>

The list of vertices in the order they are recorded here is the preorder traversal of the tree.

Find the number of rooted trees consistent with the preorder traversal, modulo $998244353$.
Two rooted trees (with $N$ vertices and rooted at Vertex $1$) are considered different when there is a non-root vertex whose parent is different in the two trees.

Constraints

  • $2 \leq N \leq 500$
  • $1 \leq P_i\leq N$
  • $P_1=1$
  • All $P_i$ are distinct.
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

NN

P1P_1 P2P_2 \ldots PNP_N

Output

Print the number of rooted trees consistent with the preorder traversal, modulo $998244353$.


4
1 2 4 3
3

The rooted trees consistent with the preorder traversal are the three shown below, so the answer is $3$.

Note that the tree below does not count. This is because, among the children of Vertex $2$, we visit Vertex $3$ before visiting Vertex $4$, resulting in the preorder traversal $1,2,3,4$.


8
1 2 3 5 6 7 8 4
202