#include using namespace std; using vi = vector; using vvi = vector; using ll = long long; using vll = vector; using vvll = vector; ll sq(ll x) { return x * x; } // ok if bip bool dfs(int v, vvi &adj, vi &col, vi &vis, vi &cnt) { for(int u : adj[v]) { if(vis[u]) { if (col[u] == col[v]) { return false; } } else { col[u] = col[v] ^ 1; cnt[col[u]]++; vis[u] = true; bool ok = dfs(u, adj, col, vis, cnt); if(!ok) { return false; } } } return true; } void solve() { int n; cin >> n; vll x(n); vll y(n); vll r(n); for(int i = 0; i < n; i++) { cin >> x[i] >> y[i] >> r[i]; } vvi adj(n); for(int i = 0; i < n; i++) { for(int j = i+1; j < n; j++) { bool touch = sq(x[i] - x[j]) + sq(y[i] - y[j]) == sq(r[i] + r[j]); if(touch) { adj[i].push_back(j); adj[j].push_back(i); } } } vi vis(n); vi col(n); for(int i = 0; i < n; i++) { if(vis[i]) continue; vis[i] = 1; col[i] = 0; vi cnt(2); cnt[0] = 1; bool ok = dfs(i, adj, col, vis, cnt); if(ok && cnt[0] != cnt[1]) { cout << "YES" << endl; return; } } cout << "NO" << endl; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int tc = 1; while(tc--) { solve(); } }