#include #include #include #include #include #include #include #include #include #include #include #define MOD (1000000007l) #define ll long long #define rep(i, n) for (ll i = 0; i < (n); i++) using namespace std; ll union_find_find(ll node, vector &vec) { if (vec[node] == -1) return node; ll ret = union_find_find(vec[node], vec); vec[node] = ret; return ret; } void union_find_union(ll a, ll b, vector &vec) { ll a_root = union_find_find(a, vec); ll b_root = union_find_find(b, vec); if (a_root != b_root) vec[b_root] = a_root; } void solve() { ll N; cin >> N; vector uf(N, -1); unordered_map edges; rep (i, N-1) { ll u, v; cin >> u >> v; union_find_union(u, v, uf); edges[u]++; edges[v]++; } unordered_map st; rep (i, N) st[union_find_find(i, uf)]++; if (st.size() == 1) cout << "Bob" << endl; else if (st.size() > 2) cout << "Alice" << endl; else { bool tmp = false; for (auto it: edges) if (it.second == 1) tmp = true; if (tmp) cout << "Alice" << endl; else cout << "Bob" << endl; } } int main(void) { cin.tie(0); ios::sync_with_stdio(false); cout.precision(12); cout << fixed; solve(); return 0; }