#include using namespace std; using ll = long long; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector> adj(n); for (int i = 0; i < n - 1; i++) { int a; int b; cin >> a >> b; a--; b--; adj[a].insert(b); adj[b].insert(a); } if (n == 1) { cout << "YES\n"; return; } set> leafs; for (int i = 0; i < n; i++) { if (adj[i].size() == 1) { leafs.insert({1, i}); } } map in; for (int i = 0; i < n; i++) { in[i] = 1; } while (leafs.size() > 1) { int cur = (*leafs.begin())[1]; // cout << cur << " " << in[cur] << endl; int next = *adj[cur].begin(); if (in[cur] > in[next]) break; leafs.erase(leafs.begin()); in[next] += in[cur]; adj[next].erase(cur); if (adj[next].size() == 1) { leafs.insert({in[next], next}); } } if (leafs.size() == 1) { cout << "YES\n"; } else { cout << "NO\n"; } }