#include using namespace std; using ll=long long; #define int ll #define rep(i,a,b) for(int i=a;i<(b);i++) #define sz(x) (int)(x).size() #define all(x) begin(x), end(x) using pii=pair; using vi=vector; #define fi first #define se second #define pb push_back const int N=1010; int x[N],y[N],r[N]; vector g[N]; int c[N]; int cnt[2]; void dfs(int v,int cc) { if(c[v]==-1) { c[v] = cc; cnt[cc]++; } else if(c[v]!=cc) cout<<"NO",exit(0); else return; for(int to:g[v]) dfs(to,!cc); } signed main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); 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=1;j<=n;j++) if(i!=j&&(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])==(r[i]+r[j])*(r[i]+r[j])) g[i].push_back(j); for(int i=1;i<=n;i++) c[i]=-1; bool ok=false; for(int i=1;i<=n;i++) if(c[i]==-1) { cnt[0]=cnt[1]=0; dfs(i,0); if(cnt[0]!=cnt[1]) ok=true; } cout<<(ok?"YES":"NO"); }