use std::cmp::max; fn main() { let mut nd = String::new(); std::io::stdin().read_line(&mut nd).ok(); let nd: Vec = nd.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nd[0]; let d = nd[1]; let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); let mut pos: Vec = vec![0; n]; a.trim().split_whitespace().map(|s| s.parse::().unwrap()).enumerate().for_each(|pair| { pos[pair.0 + 1] = pos[pair.0] + pair.1; }); let mut result: Vec = vec![0; n]; pos.iter().enumerate().for_each(|pair| { if pair.0 > 0 { result[pair.0] = max(*pair.1, result[pair.0 - 1] + d); } }); println!("{}", result.iter().map(|&i| i.to_string()).collect::>().join(" ")); }