#include <bits/stdc++.h>
using namespace std;
using lld = int64_t;
class S {
 public:
  vector<int> factorize(int n) {
    vector<int> res;
    res.push_back(1);
    while (n % 2 == 0) {
      res.push_back(2);
      n = n / 2;
    }
    for (int i = 3; i <= sqrt(n); i = i + 2) {
      while (n % i == 0) {
        res.push_back(i);
        n = n / i;
      }
    }
    if (n > 2) {
      res.push_back(n);
    }
    return res;
  }
  vector<int> intersect(const vector<int> &one, const vector<int> &two) {
    int n = one.size();
    int m = two.size();
    vector<int> res;
    int j_itr = 0;
    for (int i = 0; i < n; ++i) {
      for (int j = j_itr; j < m; ++j) {
        if (one[i] == two[j]) {
          res.push_back(one[i]);
          ++j_itr;
          break;
        }
      }
    }
    return res;
  }
  int calc_field_size(const vector<int> &one, int max) {
    int factor = 1;
    for (int i = 0; i < (int)one.size(); ++i) {
      factor *= one[i];
    }
    int count = max /= factor;
    return count;
  }
  string solve(vector<int> &nums) {
    std::sort(nums.begin(), nums.end());
    vector<vector<int>> factorizations;
    int n = nums.size();
    int max = 0;
    for (int i = 0; i < n; ++i) {
      max = std::max(nums[i], max);
      factorizations.push_back(factorize(nums[i]));
    }
    vector<int> common_factors = factorizations[0];
    for (int i = 0; i < n; ++i) {
      common_factors = intersect(common_factors, factorizations[i]);
    }
    int field_size = calc_field_size(common_factors, max);
    int tmp = field_size - n;
    int c = tmp % 2;
    if (c) {
      return "Alice";
    } else {
      return "Bob";
    }
  }
  void solve() {
    int n;
    scanf("%d\n", &n);
    vector<int> nums;
    int elt;
    for (int i = 0; i < n; ++i) {
      scanf("%d", &elt);
      nums.push_back(elt);
    }
    string res = solve(nums);
    printf("%s\n", res.c_str());
  }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  S s;
  s.solve();
  return 0;
}
