fn main() { let mut s = { let mut line = String::new(); std::io::stdin().read_line(&mut line).unwrap(); line.trim().parse::().unwrap() }; let mut aa = vec![]; while s != 0 { let sqrt_a = (2_usize..).find(|&a| a.pow(2) > s).unwrap() - 1; aa.push(sqrt_a.pow(2)); s -= sqrt_a.pow(2); } println!("{}", aa.len()); println!( "{}", aa.iter() .map(|a| a.to_string()) .collect::>() .join(" ") ); }