#include <iostream>
#include <map>
#include <vector>
using namespace std;
/*
最朴素的想法。如果而后单调,那么肯定满足一下条件:
1. 不包含重复元素。
2. 原始数组存在一个至少长度为m的严格递增或者递减序列。
这里我们使用map记录元素值和元素原始序号,map会自动根据插入的key排序,所以最终的map为递增key,如果想要满足2条件,只需要验证存在至少长度为m的value的数值(即原始序号)为严格递减或者递增。
*/
int main() {
int T;
cin >> T;
while (T--) {
int n, m;
cin >> n >> m;
map<int, int> mm;
for (int i = 0; i < n; i++) {
int t;
cin >> t;
mm.insert(make_pair(t, i));//记录元素数值和原始序号
}
if (n!=mm.size()) {
//如果这里,说明存在重复元素,直接NO
cout<<"NO"<<endl;
continue;
}
if (m==1) {
//如果m=1直接YES
cout<<"YES"<<endl;
continue;
}
int front = -1;//记录上一个元素数值
int si_s = 1;//记录递增序列大小
int si_j = 1;//记录递减序列大小
bool f = false;//记录是否找到m个单调序列
for (auto p : mm) {
if (front == -1) {
front = p.second;
continue;
}
//判断是否严格递增
if ((p.second - front) == 1) {
si_s++;
si_j = 1;
if (si_s == m) {
cout << "YES" << endl;
f = true;
break;
}
} else {
si_s = 1;
}
//判断是否严格递减
if ((p.second - front) == -1) {
si_j++;
si_s = 1;
if (si_j == m) {
f = true;
cout << "YES" << endl;
break;
}
} else {
si_j = 1;
}
front = p.second;
}
if (!f) {
cout << "NO" << endl;
}
}
}