#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5, MAXM = 1e4 + 5;
int n, m, k, a[MAXN];
int cnt[MAXM], sta[MAXN];
bool vis[MAXN];
string Solve(){
cin >> m >> n >> k;
memset(cnt, 0, sizeof cnt);
for (int i = 1; i <= n; i++){
cin >> a[i];
vis[i] = 1;
cnt[a[i]]++;
}
int head = 1, least = k, skip = 0;
for (int i = 1; i <= n; i++){
while (!cnt[head]){
head++, least++;
}
if (head <= a[i] && a[i] <= least){
vis[i] = 0;
cnt[a[i]]--;
}else {
sta[++skip] = i;
}
}
int last = skip, start = min(last, max(1, skip - k + 1));
for (int i = 1; i <= n; i++){
}
bool flag = 1;
while (flag){
bool f = 0;
while (last > 2 && !vis[sta[last]]){
last--;
}
for (int i = last; i >= start; i--){
int x = sta[i];
while (!cnt[head]){
head++, least++;
}
if (head <= a[x] && a[x] <= least && vis[x]){
vis[x] = 0;
cnt[a[x]]--;
f = 1;
start--;
}
}
flag &= f;
}
for (int i = 1; i <= n; i++){
if (vis[i] && !(head <= a[i] && a[i] <= least)){
return "NO";
}
}
return "YES";
}
int main(){
int t;
cin >> t;
while (t--){
cout << Solve() << '\n';
}
return 0;
}