#include using namespace std; using ii = pair; using vi = vector; using vvi = vector; using vii = vector; ii dfs(int u, int p, const vvi &E, vii &ans) { if (E[u].size() == 1) return {u, -1}; ii ret = {-1, -1}; for (int v : E[u]) if (v != p) { ii tv = dfs(v, u, E, ans); if (ret.first < 0) { ret = tv; continue; } if (ret.second < 0 && tv.second < 0) ret.second = tv.first; else if (ret.second >= 0 && tv.second < 0) ans.push_back({ret.second, tv.first}), ret.second = -1; else if (ret.second < 0 && tv.second >= 0) ans.push_back({ret.first, tv.first}), ret.first = tv.second; else ans.push_back({ret.second, tv.first}), ret.second = tv.second; } return ret; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, h; cin >> n >> h; vvi E(n); for (int i = 1, a, b; i < n; ++i) cin >> a >> b, E[a].push_back(b), E[b].push_back(a); if (n == 2) { cout << "1\n0 1" << endl; return 0; } int u = 0; while (E[u].size() < 2) ++u; vii ans; ans.push_back(dfs(u, -1, E, ans)); cout << ans.size() << endl; for (ii a : ans) if (a.second >= 0) cout << a.first << ' ' << a.second << '\n'; else cout << a.first << ' ' << u << '\n'; return 0; }