#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,n,h,x[1009],y[1009],z[1009],id[1009];
ll r;
vector<string>ans;
ll dist(int x1,int x2,int y1,int y2,int z1,int z2){
ll p1=(x1-x2)*(x1-x2);
ll p2=(y1-y2)*(y1-y2);
ll p3=(z1-z2)*(z1-z2);
return p1+p2+p3;
}
int root(int x){
if(id[x]==x)return x;
return id[x]=root(id[x]);
}
void unite(int x,int y){
id[root(x)]=root(y);
}
int main()
{
cin>>t;
while(t--){
cin>>n>>h>>r;
for(int i=0;i<=n+1;i++){
id[i]=i;
}
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i]>>z[i];
}
for(int i=1;i<=n;i++){
if(z[i]-r<=0)unite(i,0);
if(z[i]+r>=h)unite(i,n+1);
for(int j=i+1;j<=n;j++){
if(dist(x[i],x[j],y[i],y[j],z[i],z[j])<=4*r*r)
unite(i,j);
}
}
if(root(0)==root(n+1))ans.push_back("Yes");
else ans.push_back("No");
}
for(int i=0;i<ans.size();i++)cout<<ans[i]<<endl;
return 0;
}
请各位大佬帮忙看一下,谢谢~