#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int T,n,h,r,k;
int x[N],y[N],z[N],head[N];
bool flag[N];
inline int read()
{
int w=0,x=0;
char c=getchar();
while(!isdigit(c))
w|c=='-',c=getchar();
while(isdigit(c))
x=(x<<1)+(x<<3)+(c^48),c=getchar();
return w?-x:x;
}
inline int dis(int x,int y,int z,int xx,int yy,int zz)
{
return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy)+(z-zz)*(z-zz));
}
inline bool dfs(int X,int Y,int Z,int K)
{
if(r>h-Z) return 1;
flag[K];
for(register int i=1;i<=n;++i)
{
if(flag[i]) continue;
if(2*r>dis(x[i],y[i],z[i],X,Y,Z))
{
flag[i]=1;
dfs(x[i],y[i],z[i],i);
}
}
return 0;
}
inline void work()
{
n=read(),h=read(),r=read();
for(register int i=1;i<=n;++i)
{
x[i]=read(),y[i]=read(),z[i]=read();
if(r>=z[i]) head[++k]=i;
}
for(register int i=1;i<=k;++i)
{
memset(flag,0,sizeof(flag));
if(dfs(x[head[i]],y[head[i]],z[head[i]],head[i]))
{
printf("Yes\n");
return ;
}
}
printf("No\n");
}
int main()
{
T=read();
for(register int G=1;G<=T;++G)
work();
return 0;
}