#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; bool isPrime(int number){ if(number < 2) return false; if(number == 2) return true; if(number % 2 == 0) return false; for(int i=3; (i*i)<=number; i+=2){ if(number % i == 0 ) return false; } return true; } int count_primes_between(int x,int y){ int j,i,count=0,flag; for(i=x;i<=y;i++){ flag=0; for(j=2;j<=i/2;j++){ if(!(i%j)){ flag=1;break; } if(!flag) count++; } } return count; } 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. bool prime[n+1]; memset(prime, true, sizeof(prime)); int c=0; 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 for (int p=2; p<=n; p++) if (prime[p]) c++; return c; } int main(){ int g; cin >> g; for(int a0 = 0; a0 < g; a0++){ int n; cin >> n; int c; c=SieveOfEratosthenes(n); if(c%2!=0) printf("Alice\n"); else printf("Bob\n"); // your code goes here } return 0; }