#include #include #include #include #include using namespace std; vector DeterminePrimes(int A, int limit) { vector sieve(limit, false); //limit - A + 1, false); if(A == 1) { sieve[1] = true; sieve[2] = true; sieve[3] = true; } else if(A == 2) { sieve[0] = true; sieve[1] = true; } else if(A == 3) { sieve[0] = true; } sieve[0] = false; sieve[1] = true; sieve[2] = true; sieve[3] = true; for (int x = 1; x*x < limit; x++) { for (int y = 1; y*y < limit; y++) { int n = 4*x*x + y*y; //cout << n << ' '; if (n <= limit && (n % 12 == 1 || n % 12 == 5)) { //n = n - A; //if(n > 0) sieve[n] = sieve[n] ^ true; } n = 3*x*x + y*y; //cout << n << ' '; if (n <= limit && n % 12 == 7) { //n = n - A; //if(n > 0) sieve[n] = sieve[n] ^ true; } n = 3*x*x - y*y; //cout << n << ' '; if (x > y && n <= limit && n % 12 == 11) { //n = n - A; //if(n > 0) sieve[n] = sieve[n] ^ true; } } } for (int r = 5; r*r < limit; r++) { if(sieve[r]) //(r >= A && sieve[r-A]) { long num = r; //- A; for (long i = num*num; i < limit; i += num*num) { sieve[i] = false; } } } /* for(int i = 0; i <= sieve.size(); ++i) if(sieve[i]) cout << i << ' '; cout << endl; */ return sieve; } bool in_set(int x, int n) { return x > -1 && x < n+1; } int main() { int g, n; cin >> g; for(int i = 0; i < g; ++i) { cin >> n; vector v = DeterminePrimes(0, n+1); v[0] = false; v[1] = false; int count = 0; for_each(v.begin(), v.end(), [&](auto e) { if(e == 1) ++count; }); if(count % 2) cout << "Alice" << endl; else cout << "Bob" << endl; } return 0; }