#include using namespace std; using ll = long long; #define ALL(v) v.begin(),v.end() #define dbg(x) cerr << #x << ": " << (x) << endl; template ostream& operator<<(ostream& os, pair& p) { os << '(' << p.first << ',' << p.second << ')'; return os; } template void print(Iter beg, Iter end) { for (Iter itr = beg; itr != end; ++itr) { cerr << *itr << ' '; } cerr << '\n'; } int MAX = 0; int N; vector prime; map note; int grundy(int n) { if (note.count(n)) return note[n]; bool exist0 = false; for (int p : prime) { int x = p; while (n % x == 0) { if (grundy(n / x) == 0) { exist0 = true; break; } x *= p; } } return note[n] = exist0; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> N; int tmp = N; for (int i = 2; i*i <= tmp; ++i) { if (tmp % i == 0) { prime.push_back(i); while (tmp % i == 0) { ++MAX; tmp /= i; } } } if (tmp > 1) { prime.push_back(tmp); ++MAX; } // print(ALL(prime)); // dbg(MAX) note[1] = 0; int g = grundy(N); // print(ALL(note)); cout << (g==0 ? "Bob" : "Alice") << '\n'; }