#include #include #include #include #include #include using namespace std; typedef long long LL; typedef vector VI; #define REP(i,n) for(int i=0, i##_len=(n); i inline void amin(T &x, const T &y) { if (y inline void amax(T &x, const T &y) { if (x void rprintf(const char *fmt, Iter begin, Iter end) { for (bool sp=0; begin!=end; ++begin) { if (sp) putchar(' '); else sp = true; printf(fmt, *begin); } putchar('\n'); } const int MAX = 10000000; int min_factor[MAX+1]; vectorprime; void make_prime() { for (int i=2; i<=MAX; i+=2) min_factor[i] = 2; for (int i=3; i<=MAX; i+=3) if (!min_factor[i]) min_factor[i] = 3; for (int i=5, d=2; i*i<=MAX; ) { if (!min_factor[i]) { min_factor[i] = i; for (int j=i*i; j<=MAX; j+=i) if (!min_factor[j]) min_factor[j] = i; } i += d; d = 6 - d; } for (int i=2; i<=MAX; i++) { if (min_factor[i]==0) min_factor[i] = i; if (min_factor[i]==i) prime.push_back(i); } } vector > prime_factor(LL n) { vector >r; for (int i=0; (LL)prime[i]*prime[i]<=n; i++) { int cnt = 0; while (n%prime[i] == 0) n/=prime[i], cnt++; if (cnt) r.push_back(make_pair(prime[i], cnt)); } if (n>1) r.push_back(make_pair(n, 1)); return r; } int N; int A[100111]; int main() { make_prime(); scanf("%d", &N); REP (i, N) { int x; scanf("%d", &x); int cnt = upper_bound(prime.begin(), prime.end(), x) - prime.begin(); puts(cnt & 1 ? "Alice": "Bob"); } return 0; }