#include using namespace std; #define int long long #define double long double int x[1005],y[1005],r[1005]; vector v[1005]; bool ok[1005]; int nr,nr1; bool valid; int le[1005]; void g (int x) { ok[x]=true; if (le[x]==0) nr++; else nr1++; for (int y : v[x]) { if (!ok[y]) { le[y] = (le[x] + 1) % 2; g(y); } else if (le[x] == le[y]) { valid=false; } } return; } void find() { int n; cin>>n; for (int i=1;i<=n;i++) cin>>x[i]>>y[i]>>r[i]; for (int i=1;i<=n;i++) for (int j=(i+1);j<=n;j++) { int difx = x[i] - x[j]; int dify = y[i] - y[j]; int diff = difx * difx + dify * dify; int sumr = r[i] + r[j]; if (diff == (sumr * sumr)) { v[i].push_back(j); v[j].push_back(i); } } for (int i=1;i<=n;i++) { ok[i] = false; le[i] = 0; } valid=true; bool diffgrad = false; for (int i=1;i<=n;i++) { nr=0; nr1=0; if (!ok[i]) { le[i]=0; g(i); if (nr != nr1) { diffgrad = true; } } } if (valid && diffgrad) cout<<"YES"; else cout<<"NO"; } int32_t main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; while(t--) { find(); } return 0; }