from itertools import accumulate from bisect import bisect, bisect_left from functools import reduce from itertools import accumulate, product from operator import itemgetter, xor from math import sqrt from fractions import gcd from collections import Counter, deque, defaultdict import sys #input = sys.stdin.readline from sys import setrecursionlimit setrecursionlimit(10**9) def inpl(): return list(map(int, input().split())) N = int(input()) M = inpl() def primes(N): sieve = [1]*(N+1) sieve[:2] = [0, 0] P = [] for i in range(2, N+1): if sieve[i]: P.append(i) for j in range(2*i, N+1, i): sieve[j] = 0 return P def get_factors(X): res = defaultdict(int) for i in range(bisect(P, sqrt(X))): while True: d, m = divmod(X, P[i]) if m: break res[P[i]] += 1 X = d if X != 1: res[X] += 1 return res def get_grundy(ddic): res = 0 for v in ddic.values(): res ^= v%3 return res P = primes(10**4) Nim = [get_grundy(get_factors(m)) for m in M] if reduce(xor, Nim): print("Alice") else: print("Bob")