void main() { int N = readInt; int[] pfs; for (int i = 2; i * i <= N; ++i) { while(N % i == 0) { N /= i; pfs ~= i; } } if (N > 1) pfs ~= N; pfs.sort; int M = cast(int)(pfs.length); int x; for (int i = 0; i < M;) { int j = i; while (j < M && pfs[i] == pfs[j]) j++; x ^= j - i; i = j; } writeln(x ? "Alice" : "Bob"); } import std,core.bitop; string[]_R; string readString(){while(_R.empty){_R=readln.chomp.split;}auto ret=_R.front;_R.popFront;return ret;} int readInt(){return readString.to!int;} long readLong(){return readString.to!long;} ulong readULong(){return readString.to!ulong;} real readReal(){return readString.to!real;} bool chmin(T)(ref T A,T B){if(A>B){A=B;return true;}else{return false;}} bool chmax(T)(ref T A,T B){if(A1){int mid=(L+R)/2;(A[mid]1){int mid=(L+R)/2;(A[mid]<=x?L:R)=mid;}return R;}