#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; /* sample input: 3 1 2 5 sample output: Bob Alice Alice */ const int PROBLEM_SIZE = 100001; int primeCount[PROBLEM_SIZE]; bool isPrime[PROBLEM_SIZE]; void sieve() { primeCount[0] = 0; primeCount[1] = 0; primeCount[2] = 1; isPrime[0] = false; isPrime[1] = false; int i; for (i = 2; i < PROBLEM_SIZE; i++) { isPrime[i] = true; } for (i = 3; i * i < PROBLEM_SIZE; i += 2) { if (isPrime[i]) { // sieve the multiple of i int step = i * 2; for (int j = i * i; j < PROBLEM_SIZE; j += step) { isPrime[j] = false; } } } for (i = 4; i < PROBLEM_SIZE; i += 2) { isPrime[i] = false; } int c = 1; for (i = 3; i < PROBLEM_SIZE; i++) { if (isPrime[i]) { c++; } primeCount[i] = c; } } int main() { sieve(); int g; cin >> g; for (int a0 = 0; a0 < g; a0++) { int n; cin >> n; cout << ((primeCount[n] & 1) == 0 ? "Bob" : "Alice") << endl; } return 0; }