#include using namespace std; #define rep(i,a,b) for (int i = a; i < b; i++) #define trav(a,b) for (auto a : b) #define all(x) begin(x),end(x) #define lld long long pair arr[1000000]; lld r[1000000]; lld sq(lld x){ return x*x; } lld sqdist(pair a, pair b){ return sq(a.first-b.first)+sq(a.second-b.second); } vector nei[10000]; int visited[1000000]; bool bip; int cnt[2]; void DFS(int node, int col=0){ cnt[col]++; visited[node]=col; trav(a,nei[node]){ if(visited[a]==-1){ DFS(a,1-col); }else{ if(visited[a]+visited[node]!=1){ bip=false; } } } } void Solve() { // cout << "H" << '\n'; int n; cin>>n; rep(i,0,n){ cin>>arr[i].first>>arr[i].second>>r[i]; } rep(i,0,n){ rep(j,i+1,n){ if(sqdist(arr[i],arr[j])==sq(r[i]+r[j])){ nei[i].push_back(j); nei[j].push_back(i); } } } rep(i,0,n){ visited[i]=-1; } bool ans=false; rep(i,0,n){ if(visited[i]==-1){ rep(j,0,2)cnt[j]=0; bip=true; DFS(i); if(bip && cnt[0]!=cnt[1])ans=true; } } if(ans)cout<<"YES\n"; else cout<<"NO\n"; } signed main() { ios::sync_with_stdio(0); cin.tie(0); int tt = 1; // cin >> tt; while (tt--) Solve(); return 0; }