import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.math.BigInteger; import java.util.Arrays; import java.util.StringTokenizer; public class AliceAndBobSilly { public static void main(String args[]){ InputReader in = new InputReader(System.in); //OutputStream outputStream = System.out; PrintWriter out = new PrintWriter(System.out); int t=in.nextInt(); while(t-->0){ int n=in.nextInt(); int c=sieveOfEratosthenes(n+1); if(c%2==0) out.println("Bob"); else out.println("Alice"); } out.close(); } static int sieveOfEratosthenes(int n) { // Create a boolean array "prime[0..n]" and initialize // all entries it as true. A value in prime[i] will // finally be false if i is Not a prime, else true. boolean prime[] = new boolean[n+1]; for(int i=0;i { int u; int v; BigInteger bi; public Pair(int u, int v) { this.u = u; this.v = v; } public int hashCode() { int hu = (int) (u ^ (u >>> 32)); int hv = (int) (v ^ (v >>> 32)); return 31 * hu + hv; } public boolean equals(Object o) { Pair other = (Pair) o; return u == other.u && v == other.v; } public int compareTo(Pair other) { return Long.compare(u, other.u) != 0 ? Long.compare(u, other.u) : Long.compare(v, other.v); } public String toString() { return "[u=" + u + ", v=" + v + "]"; } } public static void debug(Object... o) { System.out.println(Arrays.deepToString(o)); } static long modulo(long a,long b,long c) { long x=1; long y=a; while(b > 0){ if(b%2 == 1){ x=(x*y)%c; } y = (y*y)%c; // squaring the base b /= 2; } return x%c; } public static long getClosestK(long[] a, long x) { int low = 0; int high = a.length - 1; while (low <= high) { int mid = (low + high) / 2; // test lower case if (mid == 0) { if (a.length == 1) { return a[0]; } return Math.min(Math.abs(a[0] - x), Math.abs(a[1] - x)) + x; } // test upper case if (mid == a.length - 1) { return a[a.length - 1]; } // test equality if (a[mid] == x || a[mid + 1] == x) { return x; } // test perfect range. if (a[mid] < x && a[mid + 1] > x) { return Math.min(Math.abs(a[mid] - x), Math.abs(a[mid + 1] - x)) + x; } // keep searching. if (a[mid] < x) { low = mid + 1; } else { high = mid; } } throw new IllegalArgumentException("The array cannot be empty"); } long factorial(long n,long M) { long ans=1; while(n>=1) { ans=(ans*n)%M; n--; } return ans; } static long gcd(long x, long y) { if(x==0) return y; if(y==0) return x; long r=0, a, b; a = (x > y) ? x : y; // a is greater number b = (x < y) ? x : y; // b is smaller number r = b; while(a % b != 0) { r = a % b; a = b; b = r; } return r; } static class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream inputstream) { reader = new BufferedReader(new InputStreamReader(inputstream)); tokenizer = null; } public String nextLine(){ String fullLine=null; while (tokenizer == null || !tokenizer.hasMoreTokens()) { try { fullLine=reader.readLine(); } catch (IOException e) { throw new RuntimeException(e); } return fullLine; } return fullLine; } public String next() { while (tokenizer == null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(reader.readLine()); } catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public long nextLong() { return Long.parseLong(next()); } public int nextInt() { return Integer.parseInt(next()); } } }