1 #include<bits/stdc++.h>
 2 using namespace std;  
 3 #define R register int
 4 #define rep(i,a,b) for(R i=a;i<=b;i++) 
 5 #define Rep(i,a,b) for(R i=a;i>=b;i--)
 6 #define ms(i,a)    memset(a,i,sizeof(a)) 
 7 #define LL         long long 
 8 #define gc()       getchar() 
 9 #define sqr(x)     ((x)*(x)) 
10 template<class T>void read(T &x){
11   x=0; char c=0; int w=0;  
12   while (!isdigit(c)) w+=c==‘-‘,c=gc();  
13   while (isdigit(c)) x=x*10+(c^48),c=gc();
14   if(w) x=-x; 
15 }
16 int const maxn=1050+3;  
17 int n,x[maxn],y[maxn],xt,yt,r[maxn],a[maxn][maxn],vis[maxn],tin[maxn],tout[maxn],sum,id;  
18 double ans;  
19 int dist(int i,int j){return sqr(x[i]-x[j])+sqr(y[i]-y[j]);}
20 void dfs(int o,int fa){
21   tin[o]=++sum;  
22   rep(i,1,n) if(a[o][i] && i!=fa)  dfs(i,o);  
23   tout[o]=++sum;  
24 }
25 int ancestor(int x,int y){ 
26   return tin[x]<=tin[y] && tout[x]>=tout[y];   
27 }
28 void dfs2(int o,int fa,double v){
29   ans+=fabs(v);  
30   rep(i,1,n) if(a[o][i] && i!=fa && ancestor(i,id))  dfs2(i,o,1.0*r[o]/r[i]*v);  
31 }
32 int main(){
33   read(n); read(xt); read(yt);  
34   rep(i,1,n) read(x[i]),read(y[i]),read(r[i]);  
35   rep(i,1,n) rep(j,i+1,n) if(dist(i,j)==sqr(r[i]+r[j])) a[i][j]=a[j][i]=1;    
36   rep(i,1,n) if(x[i]==xt && y[i]==yt) id=i;  
37   rep(i,1,n) if(x[i]==0 && y[i]==0)  dfs(i,i);  
38   rep(i,1,n) if(x[i]==0 && y[i]==0)  dfs2(i,i,10000);  
39   cout<<int(ans)<<endl; 
40   return 0;  
41 }