func_code_string: #include <bits/stdc++.h>   using namespace std;   const double PI = acos(-1);   const long long mod = 1e9 + 7;   const long long N = 1e5 + 5, K = 105;   const int si = (1 << 20);   const long long add = 1e4;   const long long M = 100 + 5;   const double INFdb = 1e10;   int n;   vector<int> v[N];   bool check[N];   int legs[N];   void dfs(int u, int par) {     if (v[u].size() <= 2) {       check[u] = 1;       for (int x : v[u]) {         if (x != par) {           dfs(x, u);         }       }     }   }   int main() {     ios::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(0);     cin >> n;     for (int i = 1; i <= n - 1; ++i) {       int x, y;       cin >> x >> y;       v[x].push_back(y);       v[y].push_back(x);     }     for (int i = 1; i <= n; ++i) {       if ((int)v[i].size() == 1) dfs(i, 0);     }     for (int i = 1; i <= n; ++i) {       for (int x : v[i]) {         if (check[x]) {           legs[i] = min(legs[i] + 1, 2);         }       }     }     for (int i = 1; i <= n; ++i) {       if (!check[i]) {         int cnt = 0;         for (int x : v[i]) {           if (!check[x] && v[x].size() - legs[x] > 1) {             ++cnt;           }         }         if (cnt > 2) {           return cout <<  NO , 0;         }       }     }     cout <<  YES ;     cerr <<   nTime elapsed:   << 1000 * clock() / CLOCKS_PER_SEC <<  ms n ;     return 0;   }   