fn main() { let v = read_vec::(); let (n, d) = (v[0], v[1] as i64); let a = read_vec::(); let mut poses = vec![0]; for i in 0..n - 1 { poses.push(poses[poses.len() - 1] + a[i]); } for i in 1..n { poses[i] = std::cmp::max(poses[i], poses[i - 1] + d); } for pos in poses { print!("{} ", pos); } println!(""); } fn read() -> T { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().parse().ok().unwrap() } fn read_vec() -> Vec { read::() .split_whitespace() .map(|e| e.parse().ok().unwrap()) .collect() }