#include #include #include #include #include #include using namespace std; #define MAXX 100005 int tree[MAXX], arr[MAXX]; bitset<1000006> bs; vector primes; void cal( ) { for( int i = 2; i <= 100005; i += 2 ) bs[i] = 1; bs[2] = 0; for( int i = 2; i * i < 100005; i++ ) { if( !bs[i] ) { for( int j = i * 2; j < 100005; j += i ) { bs[j] = 1; } } } for( int i = 2; i < 100005; i++ ) if( !bs[i] ) primes.push_back( i ); } void update(int idx, int x, int n) { while(idx <= n) { tree[idx] += x; idx += idx & (-idx); } } int query(int idx) { int sum = 0; while(idx > 0) { sum += tree[idx]; idx -= idx & (-idx); } return sum; } int main() { cal( ); int g; cin >> g; while( g-- ) { //memset( arr, 0, sizeof arr ); memset( tree, 0, sizeof tree ); int n; cin >> n; int cnt = 1; for( int i = 1; i <= n; i++ ) { int p = primes[i-1]; for( int j = p; j <= n; j += p ) { //cout << "marking--> " << j << " "; update( j, 1, n ); //temp -= j; } //cout << endl; if( abs( query( n ) - n ) <= 1 ) break; cnt++; } if( n == 1 ) cout << "Bob" << endl; else if( cnt % 2 == 0 ) { cout << "Bob" << endl; } else cout << "Alice" << endl; } return 0; }