你目前正在研究一种名为深度优先搜索(DFS)的图遍历算法。从一个空列表 $A$ 开始,以下伪代码将使用 DFS 算法的访问顺序填充列表 $A$。
DFS(v):
append v to A
for each u neighbour of v in ascending node number:
if u is not in A:
DFS(u)在运行上述伪代码中的 DFS(1) 后,你现在拥有一个包含从 $1$ 到 $N$ 的整数排列的列表 $A$。你现在想知道有多少个具有 $N$ 个节点的简单无向图,其 DFS 访问顺序恰好是列表 $A$。请计算该数量,对 $998\,244\,353$ 取模。
简单图是指没有自环,且每对节点之间最多只有一条边相连的图。如果两个图在某一对节点之间存在一条边,而另一个图中不存在,则认为这两个图是不同的。
输入格式
第一行包含一个整数 $N$ ($2 \le N \le 300$)。第二行包含一个 $1$ 到 $N$ 的整数排列,表示列表 $A$。保证 $A$ 的第一个元素为 $1$。
输出格式
输出一个整数,表示 DFS 顺序为列表 $A$ 的不同简单图的数量,对 $998\,244\,353$ 取模。
样例
输入 1
4 1 3 4 2
输出 1
3
说明 1
下图展示了所有符合给定 DFS 顺序的图。
输入 2
10 1 2 3 4 5 6 7 8 9 10
输出 2
515546413