WA求助
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
#define ll long long
inline ll read(){
ll res=0;
char c=getchar();
while(!isdigit(c))
c=getchar();
while(isdigit(c))
res=(res<<3)+(res<<1)+(c^48),c=getchar();
return res;
}
void write(ll x){
if(x>9)
write(x/10);
putchar(x%10+48);
}
ll T,n,h,r;
ll x[N],y[N],z[N];
bool vis[N];
int head[N],idx;
struct edge{
int v,nxt;
void add(int _u,int _v){
v=_v;
nxt=head[_u];
head[_u]=idx;
}
}e[N*N];
ll dissqr(int i,int j){
return (x[i]-x[j])*(x[i]-x[j])+(z[i]-z[j])*(z[i]-z[j])+(y[i]-y[j])*(y[i]-y[j]);
}
void dfs(int u){
vis[u]=true;
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].v;
if(!vis[v])dfs(v);
}
}
int main(){
T=read();
while(T--){
idx=0;
memset(vis,0,sizeof(vis));
memset(head,0,sizeof(head));
memset(e,0,sizeof(e));
n=read(),h=read(),r=read();
for(int i=1;i<=n;i++){
x[i]=read(),y[i]=read(),z[i]=read();
if(z[i]<=r&&z[i]+r>=0)e[++idx].add(i,0),e[++idx].add(0,i);
if(z[i]+r>=h&&z[i]-r<=h)e[++idx].add(i,n+1),e[++idx].add(n+1,i);
for(int j=1;j<i;j++){
if(4*r*r>=dissqr(i,j))e[++idx].add(i,j),e[++idx].add(j,i);
}
}
dfs(0);
if(vis[n+1])puts("Yes");
else puts("No");
}
}