#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,m,n) for(int i=(int)(m) ; i < (int) (n) ; ++i ) #define rep(i,n) REP(i,0,n) using ll = long long; const int inf=1e9+7; const ll longinf=1LL<<60 ; const ll mod=1e9+7 ; struct UnionFind{ vector par; UnionFind(int n):par(n,-1){} int find(int x){ if(par[x]<0)return x; return par[x]=find(par[x]); } bool unite(int x,int y){ x=find(x); y=find(y); if(x==y)return false; if(par[x]>par[y]){ par[y]+=par[x]; par[x]=y; } else{ par[x]+=par[y]; par[y]=x; } return true; } bool same(int x,int y){ return find(x)==find(y); } int size(int x){ return -par[find(x)]; } }; int main(){ int n; cin>>n; vector> v(n-1); rep(i,n-1){ cin>>v[i].first>>v[i].second; } rep(i,n-1){ UnionFind uf(n); int cnt = n; rep(j,n-1){ if(j==i)continue; if(uf.unite(v[j].first,v[j].second))--cnt; } if(cnt>=3){ cout<<"Alice"<