#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 = 200'447; set g[N]; set s; int sz[N]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; fill(sz, sz + N, 1); FOR (i, 0, n - 1) { int u, v; cin >> u >> v; u--, v--; g[u].insert(v); g[v].insert(u); } FOR (i, 0, n) { if (SZ(g[i]) == 1) s.insert({sz[i], i}); } FOR (i, 0, n - 1) { assert(!s.empty()); auto p = *s.begin(); s.erase(s.begin()); int w = p.F; int v = p.S; int par = *g[v].begin(); if (sz[par] >= w) { g[par].erase(v); sz[par] += w; if (SZ(g[par]) == 1) s.insert({sz[par], par}); } else { cout << "NO\n"; return 0; } } cout << "YES\n"; return 0; }