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(); TreeSet primes = new TreeSet(getPrimesAsSet(1_000_000)); for(int a0 = 0; a0 < g; a0++){ int n = in.nextInt(); int size = primes.subSet(0, true, n, true).size(); System.out.println(size%2==0 ? "Bob" : "Alice"); } } public static boolean isPrime(long n){ BigInteger big = BigInteger.valueOf(n); return big.isProbablePrime(20); } /** * Return all primes <=maxPrime * Faster than getPrimesAsSet * * @param maxPrime should be <= 10^7 * @return */ public static List getPrimesAsList(int maxPrime){ List primes = new ArrayList(); if(maxPrime<2) return primes; primes.add(2); boolean[] isComposed = new boolean[(maxPrime+1)>>1]; // i points to 2*i+1 for (int i = 1; i < isComposed.length; i++) { if(!isComposed[i]){ primes.add(2*i+1); for(long j=(1L*(2*i+1)*(2*i+1)-1)/2; j getPrimesAsSet(int maxPrime){ Set primes = new HashSet(); if(maxPrime<2) return primes; primes.add(2); boolean[] isComposed = new boolean[(maxPrime+1)>>1]; // i points to 2*i+1 for (int i = 1; i < isComposed.length; i++) { if(!isComposed[i]){ primes.add(2*i+1); for(long j=(1L*(2*i+1)*(2*i+1)-1)/2; j>1]; // i points to 2*i+1 for (int i = 1; i < isComposed.length; i++) { if(!isComposed[i]){ primes[index++] = 2*i+1; for(long j=(1L*(2*i+1)*(2*i+1)-1)/2; j