#include <bits/stdc++.h>   std::vector<int> ReadVector(size_t size) {     std::vector<int> vector(size);     for (auto& element : vector) {       std::cin >> element;     }     return vector;   }   bool is_pal(const std::string& a) {     for (size_t i = 0; i < a.size() / 2; ++i) {       if (a[i] != a[a.size() - i - 1]) {         return false;       }     }     return true;   }   class Solver {    public:     std::vector<std::vector<int>> g;     Solver() {}     void read() {}     void solve() {       size_t n;       std::cin >> n;       g.resize(n);       for (size_t i = 0; i < n - 1; ++i) {         int a, b;         std::cin >> a >> b;         a--;         b--;         g[a].push_back(b);         g[b].push_back(a);       }       int root = -1;       int begin = -1;       int end = -1;       for (int v = 0; v < n; ++v) {         if (g[v].size() > 2) {           if (root != -1) {             std::cout <<  No  << std::endl;             return;           } else {             root = v;           }         }         if (g[v].size() == 1) {           if (begin == -1) {             begin = v;           } else {             end = v;           }         }       }       std::cout <<  Yes n ;       if (root == -1) {         std::cout << 1 << std::endl;         std::cout << begin + 1 <<     << end + 1 << std::endl;         return;       }       std::cout << g[root].size() << std::endl;       for (auto ch : g[root]) {         std::cout << root + 1 <<    ;         int tmp = ch;         int parent = root;         while (g[tmp].size() == 2) {           if (g[tmp][0] == parent) {             parent = tmp;             tmp = g[tmp][1];           } else {             parent = tmp;             tmp = g[tmp][0];           }         }         std::cout << tmp + 1 << std::endl;       }     }   };   int main() {     std::ios_base::sync_with_stdio(false);     std::cin.tie(nullptr);     Solver solver;     solver.solve();     return 0;   }   