#include using namespace std; const int c=200005; int n, si[c], si2[c], cent, baj; vector sz[c]; bool v[c], v2[c]; void dfs(int a) { v[a]=true; si[a]=1; for (auto x:sz[a]) { if (!v[x]) { dfs(x); si[a]+=si[x]; } } if (!cent && 2*si[a]>=n) { cent=a; } } void dfs2(int a) { si[a]=1; v2[a]=true; vector sor; for (auto x:sz[a]) { if (!v2[x]) { dfs2(x); sor.push_back(si[x]); } } sort(sor.begin(), sor.end()); for (auto x:sor) { if (x>si[a]) { baj=1; } si[a]+=x; } } int main() { ios_base::sync_with_stdio(false); cin >> n; for (int i=1; i> a >> b; sz[a].push_back(b), sz[b].push_back(a); } dfs(1); dfs2(cent); cout << (baj ? "NO" : "YES") << "\n"; return 0; } /* 6 4 5 5 6 6 1 2 6 3 2 */