#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; std::map primeFactorize(int n) { std::map res; for (int i = 2; i*i <= n; ++i) { while (n%i==0) { ++res[i]; n /= i; } } if (n!= 1) res[n] = 1; return std::move(res); } class PrimeGameReturns { public: void solve(void) { int N; cin>>N; vector M(N); REP(i,N) cin>>M[i]; map memo; function grundy = [&](int n) { if (memo.count(n)) return memo[n]; if (n == 0) return memo[n] = 0; set S; auto primes = primeFactorize(n); for (auto pk : primes) { int p,k; tie(p,k) = pk; S.insert(grundy(n/p)); if (k >= 2) S.insert(grundy(n/p/p)); } int res = 0; while (S.count(res)) ++res; return memo[n] = res; }; int det = 0; REP(i,N) det = det ^ grundy(M[i]); if (det) cout<<"Alice"<solve(); delete obj; return 0; } #endif