#include<bits/stdc++.h>
using namespace std;
long long t,n,m,h,r,q;
long long f[2002];
struct node{
long long x,y,z,r,l;
}a[2005];
long long get(int x){
if(f[x]==x)return x;
return f[x]=get(f[x]);
}
long long sum(int x,int y){
return (a[x].x-a[y].x)*(a[x].x-a[y].x)+(a[x].y-a[y].y)*(a[x].y-a[y].y)+(a[x].z-a[y].z)*(a[x].z-a[y].z);
}
int main(){
cin>>t;
while(t--){
scanf("%lld%lld%lld",&n,&h,&r);
for(int i=1;i<=n;i++)scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].z);
for(int i=1;i<=n;i++){
if(a[i].z-r<=0)a[i].l=1;
else a[i].l=0;
if(a[i].z+r>=h)a[i].r=1;
else a[i].r=0;
f[i]=i;
}
m=4*r*r;q=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(sum(i,j)<=m){
f[i]=f[j]=get(f[i]);
a[get(i)].l=max(max(a[get(f[i])].l,a[j].l),a[i].l);
a[get(i)].r=max(max(a[get(f[i])].r,a[j].r),a[i].r);
}
}
}
for(int i=1;i<=n;i++){
if(a[get(i)].l&&a[get(i)].r){
q=1;
}
}
if(q==0)printf("No\n");
else printf("Yes\n");
}
return 0;
}