#include #include #include #include using namespace std; void sieve(int n, multimap &mymap, map &results) { ++n; vector prime(n, true); prime[0] = false, prime[1] = false; for (int i = 0; i < sqrt(n); ++i) { if (prime[i]) { for (int j = i*i; j < n; j += i) { prime[j] = false; } } } size_t i, first(0), ncount(0); multimap::iterator itr = mymap.begin(); for (i = 0; i < n; ++i) { if (prime[i])++ncount; if (itr!=mymap.end() && i == itr->first) { results.insert(make_pair(itr->second, ncount)); ++itr; } } } int main() { size_t g; cin >> g; multimapmymap; size_t i; int n, nmax(0); for (i = 0; i < g; ++i) { cin >>n; mymap.insert(make_pair(n, i)); if (n > nmax)nmax = n; } mapresults; sieve(nmax, mymap, results); multimap::iterator itr = results.begin(); while(itr!=results.end()) { if(itr->second==0 || !(itr->second &1))cout << "Bob\n"; else cout << "Alice\n"; ++itr; } return 0; }