func_code_string: #include <bits/stdc++.h>   using namespace std;   bool isPrime(long long n) {     if (n <= 1) return false;     if (n <= 3) return true;     if (n % 2 == 0 || n % 3 == 0) return false;     for (long long i = 5; i * i <= n; i = i + 6)       if (n % i == 0 || n % (i + 2) == 0) return false;     return true;   }   long long gcd(long long a, long long b) {     if (a == 0) return b;     return gcd(b % a, a);   }   long long lcm(long long a, long long b) {     long long g = gcd(a, b);     long long ans = (a * b) / g;     return ans;   }   vector<long long> primes;   bool prime[10005];   void seive() {     memset(prime, 1, sizeof(prime));     prime[0] = 0;     prime[1] = 0;     for (long long i = 2; i <= 10000; i++) {       if (prime[i] == 1) {         for (long long j = i * i; j <= 10000; j += i) prime[j] = 0;       }     }   }   long long power(long long a, long long b) {     long long ans = 1;     while (b > 0) {       if (b % 2 == 1) ans = (ans % 1000000007 * a % 1000000007) % 1000000007;       a = (a * a) % 1000000007;       b = b / 2;     }     return ans;   }   template <typename T>   std::string NumberToString(T Number) {     std::ostringstream ss;     ss << Number;     return ss.str();   }   long long gcdExtended(long long a, long long b, long long *x, long long *y);   long long modInverse(long long b, long long m) {     long long x, y;     long long g = gcdExtended(b, m, &x, &y);     if (g != 1) return -1;     return (x % m + m) % m;   }   long long modDivide(long long a, long long b, long long m) {     a = a % m;     long long inv = modInverse(b, m);     return (inv * a) % m;   }   long long gcdExtended(long long a, long long b, long long *x, long long *y) {     if (a == 0) {       *x = 0, *y = 1;       return b;     }     long long x1, y1;     long long gcd = gcdExtended(b % a, a, &x1, &y1);     *x = y1 - (b / a) * x1;     *y = x1;     return gcd;   }   long long n;   vector<long long> v[100005];   vector<long long> ans;   void dfs(long long u, long long p) {     if (v[u].size() == 1 and p != 0) {       ans.push_back(u);       return;     }     for (auto x : v[u]) {       if (x != p) {         dfs(x, u);       }     }   }   void solve() {     cin >> n;     long long i, j;     for (i = 0; i < n - 1; i++) {       long long x, y;       cin >> x >> y;       v[x].push_back(y);       v[y].push_back(x);     }     long long ct = 0, root = 1;     for (long long i = 1; i <= n; i++) {       if (v[i].size() > 2) {         root = i;         ct++;       }     }     if (ct > 1) {       cout <<  No ;       return;     }     cout <<  Yes  <<   n ;     dfs(root, 0);     cout << ans.size() <<   n ;     for (i = 0; i < ans.size(); i++) {       cout << root <<     << ans[i] <<   n ;     }   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     bool codechef = 0;     long long t = 1;     if (codechef) {       cin >> t;     }     while (t--) {       solve();     }     return 0;   }   