#include #include #include #include #include #include #include namespace { void SieveGameField(std::vector& game_field) { size_t upper = std::sqrt(game_field.size()); for (size_t i = 2; i <= upper; ++i) { if (game_field.at(i - 1)) { for (size_t j = i * i; j <= game_field.size(); j += i) { game_field.at(j - 1) = false; } } } } std::pair MakeNextMove(std::vector& game_field, size_t from) { for (size_t i = from; i <= game_field.size(); ++i) { if (game_field.at(i - 1)) { game_field.at(i - 1) = false; return {true, i}; } } return {false, 0}; } std::string FindGameWinner(size_t n) { std::vector game_field(n, true); SieveGameField(game_field); std::string winner {"Bob"}; std::string loser {"Alice"}; size_t next_indx = 2; bool move_available = true; while (move_available) { std::tie(move_available, next_indx) = MakeNextMove(game_field, next_indx); if (move_available) std::swap(winner, loser); } return std::move(winner); } } // end of namespace int main() { size_t g; std::cin >> g; for (size_t i = 0; i < g; ++i) { size_t n; std::cin >> n; std::cout << FindGameWinner(n) << std::endl; } return 0; }