using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Runtime.Intrinsics.Arm; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var map = NArr(n - 1); var tree = new List[n]; for (var i = 0; i < n; ++i) tree[i] = new List(); foreach (var edge in map) { tree[edge[0]].Add(edge[1]); tree[edge[1]].Add(edge[0]); } var color = Enumerable.Repeat(-1, n).ToArray(); var count = 0; for (var i = 0; i < n; ++i) if (color[i] == -1) { color[i] = count; DFS(i, tree, color); ++count; } if (count > 2) WriteLine("Alice"); else if (count < 2) WriteLine("Bob"); else { for (var i = 0; i < n; ++i) if (tree[i].Count == 1) { WriteLine("Alice"); return; } WriteLine("Bob"); } } static void DFS(int cur, List[] tree, int[] color) { foreach (var next in tree[cur]) { if (color[next] == -1) { color[next] = color[cur]; DFS(next, tree, color); } } } }