#include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using u32 = uint32_t; using namespace std; template constexpr T INF = ::numeric_limits::max()/32*15+208; vector get_prime(int n){ if(n <= 1) return vector(); vector is_prime(n+1, true); vector prime; is_prime[0] = is_prime[1] = 0; for (int i = 2; i <= n; ++i) { if(is_prime[i]) prime.emplace_back(i); for (auto &&j : prime){ if(i*j > n) break; is_prime[i*j] = false; if(i % j == 0) break; } } return prime; } const auto primes = get_prime(65535); template vector prime_factor(T n){ vector res; for (auto &&i : primes) { while (n % i == 0){ res.emplace_back(i); n /= i; } } if(n != 1) res.emplace_back(n); return res; } int main() { int n; cin >> n; auto v = prime_factor(n); vector> u; u.emplace_back(v[0], 1); for (int i = 1; i < v.size(); ++i) { if(u.back().first == v[i]) u.back().second++; else u.emplace_back(v[i], 1); } int ans = 0; for (auto &&i : u) ans ^= i.second; puts(ans ? "Alice" : "Bob"); return 0; }