#include #include using namespace std; unordered_map> dp; string winner(long long a, long long b) { if (a == 0) return "Bob"; if (b == 0) return "Alice"; if (dp[a][b] != "") return dp[a][b]; // 操作1: a を 1 減らす if (winner(a - 1, b) == "Bob") { dp[a][b] = "Alice"; return "Alice"; } // 操作2: a を b で割ったあまりに置き換える if (a >= b && winner(a % b, b) == "Bob") { dp[a][b] = "Alice"; return "Alice"; } dp[a][b] = "Bob"; return "Bob"; } int main() { long long A, B; cin >> A >> B; cout << winner(A, B) << endl; return 0; }