#include <bits/stdc++.h>
#define ll long long
#define maxn 1010
using namespace std;
struct node{
double x,y,z;
bool operator<(const node &temp)const {
return z<temp.z;
}
}a[maxn];
long long n,t;
double r,h;
bool mark,vis[maxn];
float dist(int i,int j){
double b = a[i].x - a[j].x;
double c = a[i].y - a[j].y;
double d = a[i].z - a[j].z;
return sqrt(b * b + c * c + d * d);
}
void dfs(ll s);
int main(){
scanf("%lld",&t);
while(t--){
memset(vis,false,sizeof(vis));
memset(a,0,sizeof(a));
mark = false;
scanf("%lld%lf%lf",&n,&h,&r);
for(int i = 1;i <= n;i++){
scanf("%lf%lf%lf",&a[i].x,&a[i].y,&a[i].z);
}
sort(a + 1,a + 1 + n);
for(int i = 1;i <= n;i++){
if(!mark && a[i].z - r <= 0){
dfs(i);
}else{
break;
}
}
if(mark){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;
}
void dfs(ll s){
if(a[s].z + r >= h){
mark = 1;
return ;
}
vis[s] = 1;
for(int i = 1;i <= n;i++){
if(mark){
return ;
}
if(!vis[i] && dist(s,i) <= 2.00 * r){
dfs(i);
}
}
}