fn main() { let mut d = String::new(); std::io::stdin().read_line(&mut d).ok(); let d: usize = d.trim().parse().unwrap(); let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); let mut a: Vec = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); if d <= 2 { println!("{}", a.len() - 1); println!("{}", a.iter().map(|i| i.to_string()).collect::>().join(" ")); } while a.len() > 3 { let val: isize = a.pop().unwrap(); let pos = a.len()-2; a[pos] += val; } if a[2] == 0 { a.pop(); if a[1] == 0 { a.pop(); } } println!("{}", a.len() - 1); println!("{}", a.iter().map(|i| i.to_string()).collect::>().join(" ")); }