题目描述
给定一个排列P=(P1,P2,…,PN),其中P是(1,2,…,N)的一个排列。
打印出满足以下条件的长度为N的整数序列A=(A1,A2,…,AN)的数量,对998244353取模。
- 对于每个i=1,2,…,N,满足1≤Ai≤M。
- 整数序列A在字典序上小于整数序列(AP1,AP2,…,APN)。
什么是字典序?
整数序列X=(X1,X2,…,XN)在满足以下条件的整数i存在时,称其比整数序列Y=(Y1,Y2,…,YN)字典序小:
- 对于所有满足1≤j≤i−1的整数j,满足Xj=Yj。
- 满足Xi<Yi。
约束条件
- 1≤N≤2×105
- 1≤M≤109
- 1≤Pi≤N
- i=j⟹Pi=Pj
- 输入中的所有值都是整数。
输入
输入数据从标准输入读取,格式如下:
N M
P1 P2 … PN
输出
打印出满足题目描述条件的长度为N的整数序列A的数量,对998244353取模。
示例输入 1
4 2
4 1 3 2
示例输出 1
6
满足题目条件的整数序列A有6个,分别是(1,1,1,2),(1,1,2,2),(1,2,1,2),(1,2,2,2),(2,1,1,2)和(2,1,2,2)。
例如,当A=(1,1,1,2)时,我们有$(A_{P_1}, A_{P_2}, A_{P_3}, A_{P_4}) = (2, 1, 1, 1)$,其在字典序上大于A。
示例输入 2
1 1
1
示例输出 2
0
没有满足题目条件的长度为N的整数序列A,因此应该输出0。
示例输入 3
20 100000
11 15 3 20 17 6 1 9 5 19 10 16 7 8 12 2 18 14 4 13
示例输出 3
55365742