atcoder#ABC252G. [ABC252G] Pre-Order

[ABC252G] Pre-Order

Score : 600600 points

Problem Statement

There is a rooted tree with NN vertices called Vertex 11, 22, \ldots, NN, rooted at Vertex 11.

We performed a depth-first search starting at the root and obtained a preorder traversal of the tree: P1,P2,,PNP_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?
  • If the current vertex uu is not recorded yet, record it.

  • Then, if uu has an unvisited vertex, go to that vertex.

  • Otherwise, terminate if uu is the root, and go to the parent of uu if it is not.

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

  • 2N5002 \leq N \leq 500
  • 1PiN1 \leq P_i\leq N
  • P1=1P_1=1
  • All PiP_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 998244353998244353.

4
1 2 4 3
3

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

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

8
1 2 3 5 6 7 8 4
202