#abc252g. [abc252_g]Pre-Order
[abc252_g]Pre-Order
Problem Statement
There is a rooted tree with vertices called Vertex , , , , rooted at Vertex .
We performed a depth-first search starting at the root and obtained a preorder traversal of the tree: .
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.* If the current vertex is not recorded yet, record it.
- Then, if has an unvisited vertex, go to that vertex.
- Otherwise, terminate if is the root, and go to the parent of if it is not. 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 .
Two rooted trees (with vertices and rooted at Vertex ) are considered different when there is a non-root vertex whose parent is different in the two trees.
Constraints
- All are distinct.
- All values in input are integers.
Input
Input is given from Standard Input in the following format:
Output
Print the number of rooted trees consistent with the preorder traversal, modulo .
Sample Input 1
4
1 2 4 3
Sample Output 1
3
The rooted trees consistent with the preorder traversal are the three shown below, so the answer is .
Note that the tree below does not count. This is because, among the children of Vertex , we visit Vertex before visiting Vertex , resulting in the preorder traversal .
Sample Input 2
8
1 2 3 5 6 7 8 4
Sample Output 2
202