import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { public static void main(String[] args) { Scanner in = new Scanner(System.in); int g = in.nextInt(); int[] inputs = new int[g]; int max = 0; for(int a0 = 0; a0 < g; a0++){ int n = in.nextInt(); // your code goes here //int numberOfPrimes = getNumberOfPrimes(n); inputs[a0] = n; if (n>max) max = n; } boolean[] isPrime = calcPrimes(max); for(int i : inputs){ int numberOfPrimes = countPrimes(isPrime, i); //System.out.print(numberOfPrimes); if (numberOfPrimes % 2 == 0){ System.out.println("Bob"); }else{ System.out.println("Alice"); } } } static int countPrimes(boolean[] isPrime, int limit){ // count primes int primes = 0; for (int i = 2; i <= limit; i++) { //if (i>limit) break; if (isPrime[i]) primes++; } return primes; } static boolean[] calcPrimes(int n){ // initially assume all integers are prime boolean[] isPrime = new boolean[n+1]; for (int i = 2; i <= n; i++) { isPrime[i] = true; } // mark non-primes <= n using Sieve of Eratosthenes for (int factor = 2; factor*factor <= n; factor++) { // if factor is prime, then mark multiples of factor as nonprime // suffices to consider mutiples factor, factor+1, ..., n/factor if (isPrime[factor]) { for (int j = factor; factor*j <= n; j++) { isPrime[factor*j] = false; } } } return isPrime; } static int getNumberOfPrimes(int n){ int result = 0; for (int i = 2; i<=n; i++){ if (isPrime(i)){ result ++; } } return result; } static boolean isPrime(int n) { if (n == 2) return true; //check if n is a multiple of 2 if (n%2==0) return false; //if not, then just check the odds for(int i=3;i*i<=n;i+=2) { if(n%i==0) return false; } return true; } }