local n = io.read("*n") local parent = {} for i = 1, n do parent[i] = i end local function uf_findroot(idx) local idx_update = idx while parent[idx] ~= idx do idx = parent[idx] end while parent[idx_update] ~= idx do parent[idx_update], idx_update = idx, parent[idx_update] end return idx end local lc = {} for i = 1, n do lc[i] = 0 end for i = 1, n - 1 do local a, b = io.read("*n", "*n") a, b = a + 1, b + 1 lc[a] = lc[a] + 1 lc[b] = lc[b] + 1 local ap, bp = uf_findroot(a), uf_findroot(b) if ap ~= bp then parent[bp], parent[b] = ap, ap end end local pmap = {} for i = 1, n do local p = uf_findroot(i) if pmap[p] then pmap[p] = pmap[p] + 1 else pmap[p] = 1 end end local minsize, minp = 1000000007, 1000000007 local mmi = math.min local groupcnt = 0 for p, c in pairs(pmap) do groupcnt = groupcnt + 1 if c < minsize then minsize = c minp = p end end local f = true if groupcnt == 1 then f = true elseif groupcnt == 2 then if minsize == 1 then f = true for i = 1, n do if uf_findroot(i) ~= minp and lc[i] == 1 then f = false break end end else f = false end else f = false end print(f and "Bob" or "Alice")