#include using namespace std; typedef long long int ll; typedef pair pii; typedef vector vi; typedef vector > vii; #define rrep(i, m, n) for(int (i)=(m); (i)<(n); (i)++) #define erep(i, n) for(int (i)=1; (i)<=(n); (i)++) #define rep(i, n) for(int (i)=0; (i)<(n); (i)++) #define rrev(i, m, n) for(int (i)=(n)-1; (i)>=(m); (i)--) #define erev(i, n) for(int (i)=(n); (i)>=1; (i)--) #define rev(i, n) for(int (i)=(n)-1; (i)>=0; (i)--) #define EACH(v) (v).begin(), (v).end() #define minup(m, x) (m=min(m, x)) #define maxup(m, x) (m=max(m, x)) #define mp make_pair #define pb push_back #define INF 1000000000 #define MOD 1000000009 #define EPS 1E-9 #define MAX_N 100 #define MAX_M 10000 void getNum(int x); bool isPrime[MAX_M+1]; int n; int m[MAX_N]; int mx; int res; int main() { cin >> n; rep(i, n) cin >> m[i]; rep(i, n) maxup(mx, m[i]); getNum(2); for(int i=3; i<=mx; i+=2){ if(!isPrime[i]){ for(int j=2*i; j<=mx; j+=i){ isPrime[j] = true; } getNum(i); } } puts(res ? "Alice" : "Bob"); return 0; } void getNum(int x) { rep(i, n){ int cnt = 0; for(int j=x; m[i]%j==0; j*=x){ cnt += 1; } if(cnt) res ^= cnt % 3; } }