#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector> g(n), rg(n); g.reserve(n); rg.reserve(n); for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; --u; --v; g[u].push_back(v); rg[v].push_back(u); } // state: -1 = Draw(未確定), 0 = Win(Alice), 1 = Lose(Bob) vector state(n, -1); vector rem(n, 0); queue q; // 初期:出次数0は負け for (int i = 0; i < n; i++) { rem[i] = (int)g[i].size(); if (rem[i] == 0) { state[i] = 1; // Lose q.push(i); } } while (!q.empty()) { int v = q.front(); q.pop(); for (int u : rg[v]) { if (state[u] != -1) continue; if (state[v] == 1) { // v が負けなら、u は勝ち(u から v に行けば相手が負け) state[u] = 0; // Win q.push(u); } else { // v が勝ちなら、u の「勝ち遷移候補」を1つ潰す // u の全遷移先が勝ちになったら u は負け rem[u]--; if (rem[u] == 0) { state[u] = 1; // Lose q.push(u); } } } } if (state[0] == -1) cout << "Draw\n"; else if (state[0] == 0) cout << "Alice\n"; else cout << "Bob\n"; return 0; }