#include #pragma GCC optimize ("Ofast") using namespace std; #define rep(i,a,b) for(ll i = a; i vl; typedef pair pll; vector> adj; vector vis; ll c0 = 0; ll c1 = 0; bool dfs(ll curr, ll col) { if (vis[curr] != -1 && vis[curr] != col) return false; if (vis[curr] != -1) return true; vis[curr] = col; if (col == 0) c0++; else c1++; for (auto j : adj[curr]) if (!dfs(j, 1 - col)) return false; return true; } int main(){ cin.tie(0); ios_base::sync_with_stdio(0); ll n; cin >> n; vector> c(n); vector r(n); for (ll i = 0; i < n; i++) cin >> c[i].first >> c[i].second >> r[i]; adj.resize(n); for (ll i = 0; i < n; i++) { for (ll j = 0; j < i; j++) { ll dx = c[i].first - c[j].first; ll dy = c[i].second - c[j].second; ll sd = dx*dx + dy*dy; ll rd = r[i] + r[j]; if (rd*rd == sd) { adj[i].push_back(j); adj[j].push_back(i); } } } vis.assign(n, -1); for (ll i = 0; i < n; i++) { if (vis[i] != -1) continue; c0 = 0; c1 = 0; if (dfs(i, 0)) { if (c0 != c1) { cout << "YES\n"; return 0; } } } cout << "NO\n"; }