#include using namespace std; void dfs(int u, int p, const vector> &g, vector &leaves) { if(g[u].size() == 1) leaves.push_back(u); for(auto v : g[u]) if(v != p) dfs(v, u, g, leaves); } int main() { int n, p; cin >> n >> p; vector> g(n); vector leaves; for(int i = 0; i < n - 1; ++i) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } for(auto &x : g) sort(x.begin(), x.end()); dfs(0, -1, g, leaves); int ans = (leaves.size() + 1) / 2; cout << ans << '\n'; for(int i = 0; i < ans; ++i) cout << leaves[(2 * i + 1) % leaves.size()] << ' ' << leaves[(2 * i + 2) % leaves.size()] << '\n'; return 0; }