#zph1C. C. count

C. count

给定一个长度为 nn 的排列 pp,再给定一个整数 kk,您可以做如下操作任意次:

  • 选择 l[1,nk+1]l \in [1,n-k+1],将区间 [l,l+k1][l,l+k-1] 中的最大值与次大值交换。

求一共有多少个排列可以通过对 pp 做若干次操作得到,对 998244353998244353 取模。

输入格式

第一行两个整数 n,kn,k

第二行 nn 个整数,表示排列 pp

输出格式

一行一个整数表示答案。

样例

样例输入 #1

3 3
2 3 1

样例输出 #1

2

样例输入 #2

6 4
6 4 2 1 3 5

样例输出 #2

24

样例输入 #3

12 3
1 2 3 4 5 6 7 8 9 10 11 12

样例输出 #3

518400

其余样例见下发文件。

数据范围与约定

对于所有数据,有:

  • 2kn2.5×1052\le k\le n\le 2.5\times 10^5

子任务:

子任务编号 特殊性质 分数
11 k=2k=2 44
22 n8n\le 8 1212
33 pi=ip_i=ik=3k=3 44
44 pi=ip_i=i 2020
55 pip_i 先减后增,k=3k=3 88
66 pip_i 先减后增 2828
77 n2000n\le 2000 1212
88 无特殊性质