#include #include #include #include #include #include using namespace std; #define pb push_back #define mp make_pair int par[1005]; vector g[1005]; bool child[1005]; void dfs(int st, int parent = -1) { par[st] = parent; for (int i=0; i c; set asdf; while (scanf("%d", &n) != EOF) { memset(par, 0, sizeof par); memset(child, false, sizeof child); if ( n == 1) { cout << "YES" << endl; continue; } c.clear(); asdf.clear(); for (int i=0; i<1005; i++) { g[i].clear(); } for(int i=0; i < n-1; i++) { scanf("%d %d", &q1, &q2); g[q1].pb(q2); g[q2].pb(q1); } dfs(1); for (int i=2; i <= n; i++) { if (g[i].size() == 1) { asdf.insert(par[i]); } } if (asdf.size() >= 2) { cout << "NO" << endl;} else { cout << "YES" << endl;} } }