It is so boring in the summer holiday, isn't it? So Alice and Bob have invented a new game to play. The rules are as follows. First, they get a set of n distinct integers. And then they take turns to make the following moves. During each move, either Alice or Bob (the player whose turn is the current) can choose two distinct integers x and y from the set, such that the set doesn't contain their absolute difference |x - y|. Then this player adds integer |x - y| to the set (so, the size of the set increases by one).

If the current player has no valid move, he (or she) loses the game. The question is who will finally win the game if both players play optimally. Remember that Alice always moves first.

Input

The first line contains an integer n (2 ≤ n ≤ 100) — the initial number of elements in the set. The second line contains n distinct space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 109) — the elements of the set.

Output

Print a single line with the winner's name. If Alice wins print "Alice", otherwise print "Bob" (without quotes).

Examples

Input

2
2 3


Output

Alice


Input

2
5 3


Output

Alice


Input

3
5 6 7


Output

Bob

Note

Consider the first test sample. Alice moves first, and the only move she can do is to choose 2 and 3, then to add 1 to the set. Next Bob moves, there is no valid move anymore, so the winner is Alice.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Stack;
import java.util.StringTokenizer;
import java.util.TreeSet;



public class Main {
	
	/**
	 * @param args
	 */
	 BufferedReader in;
	    PrintWriter out = new PrintWriter(System.out);
	    StringTokenizer tok;
	   
	     String readToken() throws IOException { // reads the token; to read a full line use in.readLine()
	    while (tok == null || !tok.hasMoreTokens()) {
	    tok = new StringTokenizer(in.readLine());
	    	
	    }
	    return tok.nextToken(); // sometimes it's better to use nextToken(String) method here
	    }
	     int readInt() throws IOException { // write readDouble(), readLong(), readBigInteger() methods if necessary
	    return Integer.parseInt(readToken());
	    }
	     public String readLine() throws IOException{
			return in.readLine();
	    	 
	     }
	     long readLong() throws IOException { // write readDouble(), readLong(), readBigInteger() methods if necessary
	    	    return Long.parseLong(readToken());
	    	    }
	     double readDouble() throws IOException { // write readDouble(), readLong(), readBigInteger() methods if necessary
	    	    return Double.parseDouble(readToken());
	    	    }
	    public static void main(String[] args) throws IOException
	    {
	       new Main().run();
	    }
	    void run() throws IOException
	    {
	    	boolean oj = System.getProperty("ONLINE_JUDGE") != null;
	    	out = new PrintWriter(new OutputStreamWriter(System.out));
	    	in = new BufferedReader(new InputStreamReader(System.in));
	    	if (oj){
	    
	    	}
	    	else{
	    		
	    		
	    	}
	       solve();
	       out.flush();
	       tok=null;
	    }
	  
	    public int GCD(int a, int b) { return b==0 ? a : GCD(b, a%b); }
	    void solve() throws IOException{
	    	/*
	    	 * arxiki paratirisi:
	    	 * |a-b|= pollaplasio tou gcd(a,b)
	    	 * auto pou kanw einai na brw to oliko gcd apo ola ta n stoixeia
	    	 * auto brisketai poli eukola: prwta briskw to gcd(a,b) efarmozontas tn klasiko algorithmo
	    	 * o opoios simeiwteon moiazei kai me to |a-b|
	    	 * stin sinexeia briskw gcd(c,gcd(a,b)) me paromoio skiniko{afou pleon to gcd(a,b) apotelei meros tou set}
	    	 * sinexizw outw katheksis:
	    	 * apodeikniw stin sinexeia oti borw na kataskeuasw olous tous arithmous i*gcd etsi wste <max_element
	    	 * apli apodeiksi: sto max afairw to gcd
	    	 * sto max-gcd ksanafairw to gcd
	    	 * ktlp
	    	 * sinepws,  borw na dimiourgisw  (max_element/gcd) - n nea stoieia
	    	 * an auta einai  peritta, kerdizei i alice
	    	 * alliws kerdizei o bob
	    	 * gt isxiei auto?
	    	 * se kathe epanalipsi dimiourgeitai ena neo stoixeio
	    	 * opote paei  kapws etsi A,B,A,...B an teleiwnoun ston B ta nea stoixeia xanei i Alice, alliws xanei o Bob
	    	 * 
	    	 */
	    	int n=readInt();
	    	int gc=readInt();
	    	int max=gc;
	    	for (int i=1;i<n;++i){
	    		int x=readInt();
	    	
	    		gc=GCD(gc,x);
	    		max=Math.max(max,x);
	    	}
	    	int  numbers=(int)Math.floor(max/gc);
	    	numbers-=n;
	    	if (numbers %2==0){
	    		out.println("Bob");
	    	}else{
	    		out.println("Alice");
	    		
	    	}
	    }
}