C. C. count

    Type: Default File IO: count 2000ms 1024MiB

C. count

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

给定一个长度为 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 无特殊性质