#include #include #include using namespace std; typedef long long ll; void set_primes( const ll N, vector &primes ) { primes.clear(); vector is_prime( N ); fill( is_prime.begin(), is_prime.end(), true ); is_prime[0] = is_prime[1] = false; const int limit = sqrt( N ); for( int i = 2; i <= limit; i++ ) { if( is_prime[ i ] ) { for( int j = i * i; j <= N; j += i ) { is_prime[ j ] = false; } } } for( int i = 0; i < N; i++ ) { if( is_prime[ i ] ) { primes.push_back( i ); } } } void decompose( ll N, const vector &primes, vector> &ps ) { ps.clear(); for( ll p : primes ) { int count = 0; while( N % p == 0 ) { count++; N /= p; } if ( count > 0 ) { ps.push_back( make_pair( p, count ) ); } } if( N > 1 ) { ps.push_back( make_pair( N, 1 ) ); } } bool winNim( const vector> &vs ) { ll ans = 0LL; for( auto v : vs ) { ans ^= v.second; } return ans == 0; } int main() { int N; cin >> N; vector primes; set_primes( sqrt( N ), primes ); vector> ps; decompose( N, primes, ps ); if( winNim( ps ) ) { cout << "Bob" << endl; } else { cout << "Alice" << endl; } }