#include #include using namespace std; typedef long long ll; typedef vector vec; typedef vector mat; typedef pair P; typedef priority_queue,greater

> P_queue; #define REP(i,a,b) for(int i=a;i a(N+1,true); a.at(0)=false; a.at(1)=false; REP(i,2,N+1){ if(a.at(i)) for(ll k=2*i;k<=N;k+=i) a.at(k)=false; } rep(i,N+1) if(a.at(i)) ret.pb(i); return ret; } vec Sosu; void init(ll N){ ll BIG=N,SMALL=0; while(BIG>SMALL+1){ ll MID=(BIG+SMALL)/2; if(MID*MID>=BIG) BIG=MID; else SMALL=MID; } Sosu=Eratosthenes(BIG+3); } ll Soin(ll N){ ll ans=0; for(int i=0;Sosu.at(i)*Sosu.at(i)<=N;i++){ ll k=Sosu.at(i); ll count=0; while(true){ if(N%k!=0) break; count++; N/=k; } if(count!=0) ans^=(count%3); } if(N!=1) ans^=1; return ans; } int main(){ ll N; cin>>N; init(10005); vec x(N); rep(i,N) cin>>x.at(i); ll ans=0; rep(i,N) ans^=Soin(x.at(i)); if(ans) cout<<"Alice"<