题目描述
给定一个正整数 N 和一个长度为 M 的非负整数序列 A=(A1,A2,…,AM)。
这里,A 的所有元素都是大于等于 0 且小于 N 的整数,并且互不相同。
请计算有多少个 (0,1,…,N−1) 的排列 P 满足以下条件,并输出答案对 998244353 取模后的结果。
- 将数列 B=(B1,B2,…,BN) 用 P 初始化后,可以通过任意次数以下操作将 B 变为 A:
- 选择满足 1≤l≤r≤∣B∣ 的 l,r,如果 mex({Bl,Bl+1,…,Br}) 在 B 中出现,则将其从 B 中删除。
mex(X) 的定义如下:对于由非负整数组成的有限集合 X,mex(X) 是满足 x∈/X 的最小非负整数 x。
输入格式
输入从标准输入中给出,格式如下:
N M A1 A2 ⋯ AM
输出格式
请输出答案。
样例 1
输入
4 2
1 3
输出
8
样例 2
输入
4 4
0 3 2 1
输出
1
样例 3
输入
16 7
9 2 4 0 1 6 7
输出
3520
样例 4
输入
92 4
1 67 16 7
输出
726870122
说明/提示
限制条件
- 1≤M≤N≤500
- 0≤Ai<N
- A 的元素互不相同
- 所有输入均为整数
样例解释 1
将 B=(2,1,0,3) 初始化后,可以按以下步骤将 B 变为 A:
- 选择 (l,r)=(2,4),从 B 中删除 mex({1,0,3})=2,此时 B=(1,0,3)。
- 选择 (l,r)=(3,3),从 B 中删除 mex({3})=0,此时 B=(1,3)。
因此,P=(2,1,0,3) 满足条件。满足条件的 P 一共有 8 种,因此输出 8。
样例解释 2
只有 P=(0,3,2,1) 满足条件。
样例解释 4
请输出答案对 998244353 取模后的结果。
由 ChatGPT 4.1 翻译