#include #include #include #include #include #include #include #include using namespace std; int arr[100005], in = 0; bool prime[100005]; void sieve() { memset(prime, true, sizeof prime); prime[1] = false; for(int i = 2; i <= 100001; ++i) { if(prime[i] == true) { for(int j = 2 * i; j <= 100001; j += i) { prime[j] = false; } } } for(int i = 1; i <= 100001; ++i) { if(prime[i] == true) { arr[in++] = i; } } } int recurse(int low, int high, int target) { if(low == high) { if(arr[low] <= target) return low; return -1; } int mid = (low + high) / 2; if(mid - 1 >= low && arr[mid - 1] <= target && arr[mid] > target) return mid - 1; if(mid + 1 <= high && arr[mid] <= target && arr[mid + 1] > target) return mid; if(arr[mid] <= target) return recurse(mid + 1, high, target); return recurse(low, mid - 1, target); } int main() { sieve(); int cases; scanf("%d", &cases); while(cases--) { int n; cin >> n; int index = recurse(0, in - 1, n); index += 1; index = max(index, 0); //cout << "index: " << index << '\n'; string a = ""; if(index % 2 == 0) { a = "Bob"; } else { a = "Alice"; } cout << a << '\n'; } }