from heapq import heappush, heappop from types import GeneratorType def bootstrap(f, stack=[]): def wrappedfunc(*args, **kwargs): if stack: return f(*args, **kwargs) to = f(*args, **kwargs) while True: if type(to) is GeneratorType: stack.append(to) to = next(to) else: stack.pop() if not stack: break to = stack[-1].send(to) return to return wrappedfunc @bootstrap def dfs(n, p): parent[n] = p for v in G[n]: if v == p: continue cnt[n] += 1 yield dfs(v, n) yield if input() == "Alice": N = int(input()) K = N-2 print(K) edge = [list(map(int, input().split())) for _ in range(N-1)] G = [[] for _ in range(N)] for u, v in edge: u, v = u-1, v-1 G[u].append(v) G[v].append(u) cnt = [0]*N parent = [-1]*N dfs(0, -1) que = [] for i in range(N): if cnt[i] == 0: heappush(que, i) ans = [] for _ in range(N-2): n = heappop(que) ans.append(parent[n]+1) cnt[parent[n]] -= 1 if cnt[parent[n]] == 0: heappush(que, parent[n]) print(*ans) else: N = int(input()) K = N-2 print(K) A = list(map(int, input().split())) A = [a-1 for a in A] cnt = [0]*N for a in A: cnt[a] += 1 que = [] for i in range(N): if cnt[i] == 0: heappush(que, i) edge = [] for a in A: b = heappop(que) edge.append((a, b)) cnt[a] -= 1 if cnt[a] == 0: heappush(que, a) l = heappop(que) r = heappop(que) edge.append((l, r)) for u, v in edge: print(u+1, v+1)