#PJ005. 翻转数组

翻转数组

Description

有一个由 nn 个数组成的数组 aia_i,你可以进行任意次 kk 翻转操作,求是否可以通过该操作将这个数组按照从小到大排序。

其中,kk 翻转操作指的是从数组里选取一段连续且长度不超过 kk 的子数组并将其翻转,即选取两个数 i,j(i<j andi,j(i<j\ \rm and ji+1k)\ j-i+1\leq k),把 ai,ai+1,,aj1,aja_i,a_{i+1},\dots,a_{j-1},a_j 变成 aj,aj1,,ai+1,aia_j,a_{j-1},\dots,a_{i+1},a_i

Format

Input

输入一个数 TT,表示该题有 TT 组数据。

对于每组数据,第一行,输入两个数 n,kn,k,分别表示数组的长度和翻转操作的长度。

第二行,输入 nn 个数 aia_i,表示这个数组。

Output

对于每一组数据,如果能够通过操作实现从小到大排序,输出 YES,否则输出 NO。

Samples

5
3 2
1 2 3
3 1
9 9 9
4 4
6 4 2 1
4 3
10 3 830 14
2 1
3 1
YES
YES
YES
YES
NO

样例 22 参见附加文件中的 reverse02.inreverse02.ans

Explanation

样例 1 解释

对于第一、二组数据,显然我们不需要进行操作。

对于第三组操作,我们执行一次 44 翻转,将下标 141\sim 4 的子数组翻转得到排序完的数组。

对于第四组操作,我们执行两次 22 翻转,将下标 121\sim 2343\sim 4 的子数组翻转得到排序完的数组。

对于第五组操作,无论我们如何操作都无法得到目标数组。

Limitation

image

对于 100%100\% 的数据,$1\leq T\leq 20,1\leq k\leq n\leq 10^5,0\leq a_i\leq 10^9$。