#include using namespace std; vector encode(const vector>& G) { int N = (int)G.size(); vector deg(N); for (int v = 0; v < N; ++v) deg[v] = (int)G[v].size(); int ptr = 0; while (deg[ptr] != 1) ++ptr; int u = ptr; vector P; P.reserve(N - 2); for (int i = 0; i < N - 2; ++i) { int v = -1; for (int w : G[u]) { if (deg[w] > 0) { v = w; break; } } P.push_back(v); deg[u] = 0; --deg[v]; if (deg[v] == 1 && v < ptr) { u = v; } else { ++ptr; while (ptr < N && deg[ptr] != 1) ++ptr; u = ptr; } } return P; } vector> decode(int N, const vector& P) { vector cnt(N); for (int v : P) ++cnt[v]; int ptr = 0; while (cnt[ptr] != 0) ++ptr; int u = ptr; vector> E; E.reserve(N - 1); for (int i = 0; i < N - 2; ++i) { int v = P[i]; E.emplace_back(u, v); cnt[u] = -1; --cnt[v]; if (cnt[v] == 0 && v < ptr) { u = v; } else { ++ptr; while (ptr < N && cnt[ptr] != 0) ++ptr; u = ptr; } } int a = -1, b = -1; for (int v = 0; v < N; ++v) { if (cnt[v] >= 0) { if (a == -1) a = v; else b = v; } } E.emplace_back(a, b); return E; } void Alice() { int N; cin >> N; cout << N - 2 << endl; vector> G(N); for (int i = 0; i < N - 1; ++i) { int u, v; if (!(cin >> u) || u == -1) return; if (!(cin >> v) || v == -1) return; --u; --v; G[u].push_back(v); G[v].push_back(u); } vector P = encode(G); for (int i = 0; i < N - 2; ++i) { if (i) cout << ' '; cout << P[i] + 1; } cout << endl; } void Bob() { int N; cin >> N; cout << N - 2 << endl; vector P(N - 2); for (int& v : P) { if (!(cin >> v) || v == -1) return; --v; } vector> E = decode(N, P); for (auto [u, v] : E) { cout << u + 1 << ' ' << v + 1 << endl; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string player; cin >> player; if (player == "Alice") Alice(); if (player == "Bob") Bob(); return 0; }