#include #include using namespace std; using namespace atcoder; typedef long long ll; typedef unsigned long long ull; #define REP(i, n) for (ll i = 0; i < ll(n); i++) #define RREP(i, n) for (ll i = (ll)(n - 1); i >= 0; i--) #define REPE(i, l, n) for (ll i = l; i <= ll(n); i++) #define RREPE(i, l, n) for (ll i = ll(n); i >= l; i--) #define FORA(i, I) for (const auto &i : I) #define ALL(v) v.begin(), v.end() #define UQ(v) v.erase(unique(ALL(v)), v.end()) #define ACM(v) accumulate(ALL(v), 0LL) #define C cin >> #define P(str) cout << str << endl #define PLL pair #define PDBL pair #define TULL tuple #define VPLL vector #define VLL vector #define VVLL vector #define VVVLL vector #define VDBL vector #define VPDBL vector #define DLL deque #define INCANT cin.tie(nullptr), ios::sync_with_stdio(false) #define INT(...) \ int __VA_ARGS__; \ IN(__VA_ARGS__) #define LL(...) \ ll __VA_ARGS__; \ IN(__VA_ARGS__) #define STR(...) \ string __VA_ARGS__; \ IN(__VA_ARGS__) #define CHR(...) \ char __VA_ARGS__; \ IN(__VA_ARGS__) #define DBL(...) \ double __VA_ARGS__; \ IN(__VA_ARGS__) #define VEC(type, name, size) \ vector name(size); \ IN(name) #define VEC2(type, name1, name2, size) \ vector name1(size), name2(size); \ for (int i = 0; i < size; i++) IN(name1[i], name2[i]) #define VEC3(type, name1, name2, name3, size) \ vector name1(size), name2(size), name3(size); \ for (int i = 0; i < size; i++) IN(name1[i], name2[i], name3[i]) #define VV(type, name, h, w) \ vector> name(h, vector(w)); \ IN(name) template inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); } template inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); } int scan() { return getchar(); } void scan(int &a) { cin >> a; } void scan(long long &a) { cin >> a; } void scan(char &a) { cin >> a; } void scan(double &a) { cin >> a; } void scan(string &a) { cin >> a; } template void scan(pair &p) { scan(p.first), scan(p.second); } template void scan(vector &); template void scan(vector &a) { for (auto &i : a) scan(i); } template void scan(T &a) { cin >> a; } void IN() { } template void IN(Head &head, Tail &...tail) { scan(head); IN(tail...); } const long long INF = 1100000000000000000; const double EPS = 1e-9; //計算量O(√N) //素因数分解して、そのリストを配列で返す VPLL prime_factorize(ll n) { VPLL res; for (ll p = 2; p * p <= n; ++p) { if (n % p != 0) continue; int num = 0; while (n % p == 0) { ++num; n /= p; } res.push_back(make_pair(p, num)); } if (n != 1) res.push_back(make_pair(n, 1)); return res; } int main() { //入力 LL(n); //処理 VPLL v = prime_factorize(n); ll rxor = 0; FORA(i, v){ rxor ^= i.second; } //出力 if (rxor != 0) { P("Alice"); } else { P("Bob"); } }