#include<bits/stdc++.h>
#define dou double
using namespace std;
const int N=1100;
struct A{dou x,y,z;}a[N];
bool cmp(A n1,A n2)
{
if(n1.z==n2.z) return (n1.y==n2.y)?n1.x<n2.x:n1.y<n2.y;
return n1.z<n2.z;
}
bool check(A n1,A n2,dou r)
{
dou a=n1.x-n2.x,b=n1.y-n2.y,c=n1.z-n2.z;
double t=sqrt((a*a)*1.0+(b*b)*1.0+(c*c)*1.0);
if(t<=2*r) return 1;
return 0;
}
signed main()
{
int t;scanf("%d",&t);
while(t--)
{
int n;dou h,r;scanf("%d%lf%lf",&n,&h,&r);
bool bk=false;
for(int i=1;i<=n;i++)
{
scanf("%lf%lf%lf",&a[i].x,&a[i].y,&a[i].z);
if(a[i].z-r<=0&&a[i].z+r>=h&&n==1) bk=true;
}
sort(a+1,a+1+n,cmp);
if(bk) puts("Yes");
else if(n==1) puts("No");
else if(a[1].z-r>0||a[n].z+r<h) puts("No");
else
{
for(int i=1;i<=n;i++)if(a[i].z-r<=0)
{
A now={a[i].x,a[i].y,a[i].z};
for(int j=i+1;j<=n;j++)
{
if(check(now,a[j],r))
{
now={a[j].x,a[j].y,a[j].z};
}
if(now.z+r>=h)
{
bk=true;
break;
}
}
if(now.z+r>=h)
{
bk=true;
break;
}
}
if(bk) puts("Yes");
else puts("No");
}
}
return 0;
}
P3958