#include #define REP(i,n,N) for(int i=n;i enumpr(ll n) {// map V; for (ll i = 2; i*i <= n; i++) while (n%i == 0) V[i]++, n /= i; if (n>1) V[n]++; return V; } int mem[10101]; int grundy(int n){ if(mem[n] != -1) return mem[n]; auto m=enumpr(n); set s; for(auto pa:m){ ll p=pa.first; s.insert(grundy(n/p)); if(pa.second>=2){ s.insert(grundy(n/p/p)); } } int ret=0; while(s.find(ret)!=s.end()){ ret++; } return mem[n]=ret; } int main(){ int N; int M[101]; cin>>N; REP(i,0,N){ cin>>M[i]; } memset(mem,-1,sizeof(mem)); int g=0; REP(i,0,N){ g^=grundy(M[i]); } if(g!=0) cout<<"Alice"<