#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; typedef vector vi; vi total(100001); const int LIMIT = 1000001; int sieve[LIMIT + 1]; // Inicializar con 0’s. int primes[LIMIT + 1]; int primeCount = 1; /******** Criba de Eratóstenes ********/ void generatedPrimes(){ for (int i = 2; i <= LIMIT; ++i) { if (!sieve[i]) { primes[primeCount] = i; sieve[i] = primeCount; primeCount++; } for (int j = 1; j <= sieve[i] && i * primes[j] <= LIMIT; j++){ sieve[ i * primes[j] ] = j; } } } int count_primes(int i){ int j = 1; while(primes[j] <= i && j <= primeCount){ j++; } return j-1; } int main(){ generatedPrimes(); for(int i = 2; i <= 100001; ++i) total[i] = count_primes(i); int g; cin >> g; for(int a0 = 0; a0 < g; a0++){ int n; cin >> n; if(n == 0){ printf("Bob\n"); }else{ total[n]%2 == 0 ? printf("Bob\n") : printf("Alice\n") ; } } return 0; }