#include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <queue> #include <stack> #include <string> #include <bitset> #include <cstdio> #include <limits> #include <vector> #include <climits> #include <cstring> #include <cstdlib> #include <fstream> #include <numeric> #include <sstream> #include <iostream> #include <bits/stdc++.h> #include <algorithm> #include <unordered_map> using namespace std; bool prime[100003]; void 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. //bool prime[n+1]; memset(prime, true, sizeof(prime)); for (int p=2; p*p<=n; p++) { // If prime[p] is not changed, then it is a prime if (prime[p] == true) { // Update all multiples of p for (int i=p*2; i<=n; i += p) prime[i] = false; } } // Print all prime numbers } int main(){ int g,total[100001]; SieveOfEratosthenes(100001); total[1]=0; total[2]=1; for(int i=3;i<=100000;i++){ if(prime[i]){ total[i]=total[i-1]+1; } else{ total[i]=total[i-1]; } } cin >> g; for(int a0 = 0; a0 < g; a0++){ int n; cin >> n; // your code goes here if(total[n]%2){ cout<<"Alice"<<endl; } else{ cout<<"Bob"<<endl; } } return 0; }