const INF: usize = 1usize << 60; fn dfs(cur: usize, n: usize, rest: usize, a: &Vec, used: &mut Vec) { if used[cur] < INF { return; } let mut flg = true; for i in 0..n { if ((cur >> i) & 1) == 1 { continue; } let nval = cur | (1 << i); if a[i] > rest { used[nval] = 0; continue; } dfs(nval, n, rest - a[i], a, used); flg &= used[nval] == 0; } if flg { used[cur] = 1; } else { used[cur] = 0; } } fn main() { let mut nv = String::new(); std::io::stdin().read_line(&mut nv).ok(); let nv: Vec = nv.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nv[0]; let v = nv[1]; let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); let a: Vec = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); if v >= a.iter().sum::() { println!("Draw"); return; } let mut used = vec![INF; 1<