#include<bits/stdc++.h>
using namespace std;
#define ll long long
inline ll read(){
ll a=0;int f=0;char p=getchar();
while(!isdigit(p)){f|=p=='-';p=getchar();}
while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48);p=getchar();}
return f?-a:a;
}
struct ball{ll x,y,z;}b[1001];
vector<int>edge[1001];
ll t,n,h,r;
bool vis[1005];
void add(){
ll rx=2*r;
memset(vis,0,sizeof(vis));
for(int i=0;i<=1001;++i)edge[i].clear();
for(int i=1;i<=n;++i){
if(b[i].z-r<=0)edge[0].push_back(i);
else if(b[i].z+r>=h)edge[i].push_back(n+1);
for(int j=i+1;j<=n;++j){
if(i==j)continue;
if(abs(b[i].x-b[j].x)<=rx&&abs(b[i].y-b[j].y)<=rx&&abs(b[i].z-b[j].z)<=rx){
edge[i].push_back(j);
edge[j].push_back(i);
}
}
}
}
bool f;
void dfs(ll now){
vis[now]=1;
if(f)return;
if(now==n+1){
f=1;
return;
}
for(auto i:edge[now]){
if(!vis[i])
dfs(i);
vis[i]=0;
}
}
void test(){
cout<<endl;
for(int i=0;i<=n;++i){
cout<<i<<":";
for(auto j:edge[i])cout<<j<<" ";
cout<<endl;
}
cout<<endl;
}
int main(){
t=read();
while(t--){
n=read();h=read();r=read();
for(int i=1;i<=n;++i){
ll x,y,z;
x=read();y=read();z=read();
b[i]=(ball){x,y,z};
}
add();
f=0;
dfs(0);
if(f)puts("Yes");
else puts("No");
}
return 0;
}