#pragma GCC optimize("O2") #ifdef local #include #else #define dump(...) void(0) #endif #include #include #include #include namespace man { inline std::vector> prime_factor(int64_t n) noexcept { std::vector> ret; for(int64_t i = 2; i * i <= n; ++i) { if(n % i != 0) { continue; } int tmp = 0; while(n % i == 0) { tmp++; n /= i; } ret.emplace_back(i, tmp); } if(n != 1) { ret.emplace_back(n, 1); } return ret; } } int main() { int64_t n; std::cin >> n; const auto pf = man::prime_factor(n); std::vector ret; std::ranges::transform(pf, std::back_inserter(ret), [](const auto &p) -> int { return p.second; }); std::cout << (std::accumulate(ret.cbegin(), ret.cend(), 0, [](const int acc, const int e) -> int { return acc ^ e; }) ? "Alice\n" : "Bob\n"); }