#include using namespace std; #define FOR(i, a, b) for(int i = (a); i < (b); i++) #define RFOR(i, a, b) for(int i = (a) - 1; i >= (b); i--) #define SZ(a) int(a.size()) #define ALL(a) a.begin(), a.end() #define PB push_back #define MP make_pair #define F first #define S second typedef long long LL; typedef vector VI; typedef pair PII; typedef double db; const int N = 1 << 10; VI g[N]; bool bip; int cnt[2]; bool used[N]; int col[N]; void dfs(int v, int p) { used[v] = true; cnt[col[v]]++; for (int to : g[v]) { if (to == p) continue; if (!used[to]) { col[to] = col[v] ^ 1; dfs(to, v); } else if (col[to] == col[v]) { bip = false; } } } int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; VI x(n), y(n), r(n); FOR(i, 0, n) { cin >> x[i] >> y[i] >> r[i]; } FOR(i, 0, n) FOR(j, i + 1, n) { LL dx = x[j] - x[i], dy = y[j] - y[i], sr = r[i] + r[j]; if (dx * dx + dy * dy == sr * sr) { g[i].PB(j); g[j].PB(i); } } bool ans = false; FOR(i, 0, n) { if (!used[i]) { bip = true; cnt[0] = cnt[1] = 0; dfs(i, -1); ans |= bip && cnt[0] != cnt[1]; } } cout << (ans ? "YES\n" : "NO\n"); return 0; }