题目描述
给定正整数 N、M、K。考虑对正整数序列 A=(A0,…,AN−1) 进行如下操作:
- 按照 k=0,1,…,K−1 的顺序,依次进行以下操作:
- 将 $A\_{k\bmod N},\ A\_{(k+1)\bmod N},\ \ldots,\ A\_{(k+M-1)\bmod N}$ 升序排序。也就是说,将 $A\_{k\bmod N},\ A\_{(k+1)\bmod N},\ \ldots,\ A\_{(k+M-1)\bmod N}$ 按从小到大排列为 (x0,…,xM−1) 时,对于每个 0≤j<M,用 xj 替换 A(k+j)modN。
给定一个由 1 到 N 之间的整数构成的排列 B=(B0,…,BN−1)。请你计算有多少个正整数序列 A,使得经过上述操作后,A 恰好变为 B。请将答案对 998244353 取模后输出。
输入格式
输入以如下格式从标准输入读入:
N M K B0 B1 … BN−1
输出格式
输出满足条件的正整数序列 A 的个数,对 998244353 取模后的结果。
样例 1
输入
6 3 5
6 4 2 3 1 5
输出
18
样例 2
输入
6 3 5
6 5 4 3 2 1
输出
0
样例 3
输入
20 20 149
13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12
输出
401576539
说明/提示
限制条件
- 2≤N≤3×105
- 2≤M≤N
- 1≤K≤109
- 1≤Bi≤N
- 如果 i=j,则 Bi=Bj
样例解释 1
例如 A=(4,1,5,6,2,3) 满足条件。对于该 A,操作过程如下:
- k=0 时,A 变为 (1,4,5,6,2,3)。
- k=1 时,A 变为 (1,4,5,6,2,3)。
- k=2 时,A 变为 (1,4,2,5,6,3)。
- k=3 时,A 变为 (1,4,2,3,5,6)。
- k=4 时,A 变为 (6,4,2,3,1,5),与 B 一致。
样例解释 2
不存在满足条件的 A。
样例解释 3
所有由 1 到 20 组成的排列都满足条件。
由 ChatGPT 4.1 翻译