#include<bits/stdc++.h>
using namespace std;
int x[100000],y[100000],z[100000],ans=0;
bool vis[100000];
int n,h,r;
void dfs(int i){
if(z[i]+r>=h){
ans++;
return;
}
vis[i]=1;
for(int j=1;j<=n;j++){
if(!vis[j]&&r*2>=(double)sqrt(((double)x[i]-(double)x[j])*((double)x[i]-(double)x[j])+((double)y[i]-(double)y[j])*((double)y[i]-(double)y[j])+((double)z[i]-(double)z[j])*((double)z[i]-(double)z[j])))
dfs(j);
}
}
int main(){
int nnn;
cin>>nnn;
while(nnn>=0){
memset(vis,0,sizeof(vis));
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(z,0,sizeof(z));
n=0;h=0;r=0;ans=0;
nnn--;
cin>>n>>h>>r;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i]>>z[i];
}
for(int i=1;i<=n;i++){
if(!vis[i]&&z[i]<=r) dfs(i);
if(ans!=0) {
cout<<"Yes"<<endl;
break;
}
}
if(ans==0) cout<<"No"<<endl;
memset(vis,0,sizeof(vis));
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(z,0,sizeof(z));
n=0;h=0;r=0;ans=0;
}
return 0;
} ```