Description
给定一个排列 p1,p2,…,pn。你可以重复进行以下操作:
- 选择一个区间 pl,pl+1,…,pl+c(l≥1,l+c≤n),如果 pl 是该区间中的最小元素,则你可以任意排列 pl+1,…,pl+c。
- 选择一个区间 pl,pl+1,…,pl+c(l≥1,l+c≤n),如果 pl+c 是该区间中的最小元素,则你可以任意排列 pl,…,pl+c−1。
你想知道通过这些操作,最多可以得到多少种不同的排列。答案可能很大,请输出对 998244353 取模后的结果。
第一行包含一个整数 T,表示测试用例的数量(1≤T≤100000)。
每个测试用例的第一行包含两个整数 n 和 c(2≤c≤500000,2≤n≤500000)。所有测试用例中 n 的总和不超过 500000。
每个测试用例的第二行包含一个排列 p1,…,pn(1≤pi≤n)。
对于每个测试用例,输出一行答案,对 998244353 取模。
5
5 3
3 4 2 1 5
5 4
4 2 1 3 5
5 2
4 5 3 1 2
5 3
4 3 2 1 5
5 2
2 3 1 5 4
6
1
4
6
4
Hint
由 ChatGPT 4.1 翻译