#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int t,n,m,k,cnt[N],a[N];
bool vis[N];
void init(){
memset(cnt,0,sizeof(cnt));
memset(vis,false,sizeof(vis));
}
void solve(){
init();
cin >>m>>n>>k;
cout <<"YES\n";
return ;
deque<int> d;
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
for(int i=1;i<=n;i++){
cin >>a[i];
if(i<=k){
q.push(make_pair(a[i],i));
}
cnt[a[i]]++;
}
int l=1,r=k,f=1;
while(q.size() || d.size()){
while(!cnt[f] && f<m-k+1) f++;
if(q.size() && q.top().first>=f && q.top().first<=f+k-1){
cnt[q.top().first]--;
vis[q.top().second]=true;
q.pop();
if(r<n){
r++;
q.push(make_pair(a[r],r));
}
}else if(r<n){
l++,r++;
q.push(make_pair(a[r],r));
d.push_back(a[l-1]);
}else if((int)q.size()<k && d.size()){
l--;
q.push(make_pair(d.back(),l));
d.pop_back();
}else break;
if(!q.empty() && q.top().second<l) q.pop();
while(vis[l]) l++;
}
if(q.size()) cout <<"NO\n";
else cout <<"YES\n";
}
int main(){
cin >>t;
while(t--){
solve();
}
return 0;
}