#include #define int long long using namespace std; void solve() { int n; cin >> n; vector> g(n); for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; a--, b--; g[a].push_back(b); g[b].push_back(a); } vector sz(n, 0); int cent = -1; function cntsz = [&](int v, int p) { sz[v] = 1; int is_cent = 1; for (int u : g[v]) { if (u == p) continue; cntsz(u, v); if (sz[u] > n / 2) is_cent = 0; sz[v] += sz[u]; } if (n - sz[v] > n / 2) is_cent = 0; if (is_cent) cent = v; }; cntsz(0, -1); fill(sz.begin(), sz.end(), 0); bool good = 1; function dfs = [&](int v, int p) { vector sizes; sz[v] = 1; for (int u : g[v]) { if (u == p) continue; dfs(u, v); sizes.push_back(sz[u]); sz[v] += sz[u]; } sort(sizes.begin(), sizes.end()); int cur = 1; for (int s : sizes) { if (cur < s) good = 0; cur += s; } }; dfs(cent, -1); if (good) cout << "YES\n"; else cout << "NO\n"; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; }