#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")