using System; using System.Linq; using System.Collections.Generic; class Solution { static void Main() { var g = MyConsole.ReadInt(); var primes = ComputePrimes(); for(var i = 0; i < g; i++) { var n = MyConsole.ReadInt(); var result = GetWinner(primes, n); Console.WriteLine(result); } } private static string GetWinner(int[] primes, int n) { var pos = 0; while(pos < primes.Length && primes[pos]<=n) { pos++; } return pos % 2 == 0 ? "Bob" : "Alice"; } private static int[] ComputePrimes() { var max = 100000; var primes = new int[9592]; var primeCount = 0; for(var i=2;i<= max; i++) { if(primes.Take(primeCount).All(p=> i % p != 0)) { primes[primeCount] = i; primeCount++; } } return primes; } } class MyConsole { public static long[] ReadArrayLong() { return Console.ReadLine().Trim().Split(' ', '\t').Select(long.Parse).ToArray(); } public static int[] ReadArray() { return Console.ReadLine().Trim().Split(' ', '\t').Select(int.Parse).ToArray(); } public static int[] ReadArrayFlagged(int startFlag, int endFlag) { var initialArray = ReadArray(); var flaggedArray = new int[initialArray.Length + 2]; flaggedArray[0] = startFlag; flaggedArray[flaggedArray.Length - 1] = endFlag; Array.Copy(initialArray, 0, flaggedArray, 1, initialArray.Length); return flaggedArray; } public static int ReadInt() { return int.Parse(Console.ReadLine().Trim()); } public static long ReadLong() { return long.Parse(Console.ReadLine().Trim()); } public static void ReadLine(out int int0, out int int1) { var arr = ReadArray(); int0 = arr[0]; int1 = arr[1]; } public static void ReadLineLong(out long int0, out long int1) { var arr = ReadArrayLong(); int0 = arr[0]; int1 = arr[1]; } public static void ReadLine(out int int0, out int int1, out int int2) { var arr = ReadArray(); int0 = arr[0]; int1 = arr[1]; int2 = arr[2]; } public static void ReadLine(out int int0, out int int1, out int int2, out int int3) { var arr = ReadArray(); int0 = arr[0]; int1 = arr[1]; int2 = arr[2]; int3 = arr[3]; } }