#include using namespace std; #define REP(i, n) for(int i=0; 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 grundy(int x){ if(0 <= memo[x]) return memo[x]; set grundies; auto p=enumpr(x); for(auto pp:p){ int pf=pp.first; grundies.insert(grundy(x / pf)); if(2<=pp.second) grundies.insert(grundy(x / pf / pf)); } int ret=0; while(grundies.find(ret) != grundies.end()) ret++; return memo[x]=ret; } int main() { int N; int M[101]; int g=0; cin>>N; REP(i, N) cin>>M[i]; REP(i, 10001) memo[i]=-1; REP(i, N) g=g^grundy(M[i]); if(g!=0) cout << "Alice" << endl; else cout << "Bob" << endl; return 0; }