#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll t,n,h,r,fa[10010],shang[10010],xia[10010];
struct node{
ll c,k,g,id;
}a[10010];
double dis(int x,int y){
ll xc=a[x].c,xk=a[x].k,xg=a[x].g;
ll yc=a[y].c,yk=a[y].k,yg=a[y].g;
ll cc=xc-yc,kc=xk-yk,gc=xg-yg;
return (double)sqrt((double)cc*cc+(double)kc*kc+(double)gc*gc);
}
ll find(int x){
if(fa[x]==x) return x;
else return fa[x]=find(fa[x]);
}
void merge(int x,int y){
if(a[x].g>=a[y].g){
if(x!=y){
fa[find(y)]=find(x);
}
}else{
if(x!=y){
fa[find(x)]=find(y);
}
}
}
int main(){
int i,j;
cin>>t;
while(t--){
memset(shang,0,sizeof(shang));
memset(xia,0,sizeof(xia));
memset(fa,0,sizeof(fa));
memset(a,0,sizeof(a));
cin>>n>>h>>r;
ll d=2*r;
for(i=1;i<=n;i++){
cin>>a[i].c>>a[i].k>>a[i].g;
fa[i]=i;
}
for(i=1;i<n;i++){
for(j=i+1;j<=n;j++){
if(dis(i,j)<=d){
merge(i,j);
}
}
}
for(i=1;i<=n;i++){
if(a[i].g-r<=0){
xia[i]=1;
}
if(a[i].g+r>=h){
shang[i]=1;
}
}
for(i=1;i<=n;i++){
if(xia[i]){
if(shang[find(i)]){
cout<<"Yes"<<endl;
goto yd;
}
}
}
cout<<"No"<<endl;
yd:;
}
return 0;
}