最终这个集合会演化为一个“差为 d 的等差数列”,其中 d=gcd⁡(A),最大值是原来集合中的最大值。

因此操作步骤就是:

1、求出原集合的最大公约数g,和现在的最大数max(A)

2、计算理论上这个集合能包含多少数max(A)//g

3、计算现有数和能包含的数之间的差值added

4、根据added的奇偶判断谁获胜

from math import gcd
from functools import reduce

n = int(input())
A = list(map(int, input().split()))

g = reduce(gcd, A)
max_a = max(A)

length = max_a // g

added = length - n

if added % 2 == 1:
    print("Alice")
else:
    print("Bob")