def find(parent, i): if parent[i] == i: return i else: return find(parent, parent[i]) def union(parent, rank, x, y): xroot = find(parent, x) yroot = find(parent, y) if xroot != yroot: if rank[xroot] < rank[yroot]: parent[xroot] = yroot elif rank[xroot] > rank[yroot]: parent[yroot] = xroot else: parent[yroot] = xroot rank[xroot] += 1 def ist(N, edges): parent = list(range(N)) rank = [0] * N for u, v in edges: if find(parent, u) == find(parent, v): return False else: union(parent, rank, u, v) root = find(parent, 0) for i in range(1, N): if find(parent, i) != root: return False return True N = int(input().strip()) edges = [] for _ in range(N - 1): u, v = map(int, input().strip().split()) edges.append((u, v)) if ist(N, edges): print("Bob") else: print("Alice")