#include <algorithm>
#include <iostream>
#include <unordered_set>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
while(T--){
int n, m;
cin >> n >> m;
vector<int> a(n);
vector<int> b(n);
unordered_set<int> mark;
bool flag = false;
for(int i=0; i<n; ++i){
cin >> a[i];
b[i] = a[i];
if(mark.count(a[i])){
flag = true;
}
mark.insert(a[i]);
}
if(flag){
cout << "NO" << endl;
continue;
}
sort(b.begin(), b.end());
unordered_map<int, int> f;
bool flag1 = false;
for(int i=0; i<n; ++i)
f[b[i]] = i;
for(int i=0; i+m <= n; ++i){
int j = i+1;
while(f[a[j]]-1 == f[a[j-1]]) ++j;
if(j-i>=m){
flag1 = true;
break;
}
}
if(flag1){
cout << "YES" <<endl;
continue;
}
reverse(b.begin(), b.end());
bool flag2 = false;
for(int i=0; i<n; ++i)
f[b[i]] = i;
for(int i=0; i+m <= n; ++i){
int j = i+1;
while(f[a[j]]-1 == f[a[j-1]]) ++j;
if(j-i>=m){
flag2 = true;
break;
}
}
if(flag2){
cout << "YES" <<endl;
}else{
cout << "NO" << endl;
}
}
return 0;
}
// 64 位输出请用 printf("%lld")