fn main() { let mut nh = String::new(); std::io::stdin().read_line(&mut nh).ok(); let nh: Vec = nh.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let n = nh[0]; let h = nh[1]; let mut factors = vec![]; for i in 1..n { if n % i == 0 { factors.push(i); } } if n / h <= 2 || h <= 2 { if h == 1 { println!("{}", factors.iter().flat_map(|&i| (0..i).map(|_| i.to_string()).collect::>()).collect::>().join(" ")); } else if h == 2{ let val = factors.pop().unwrap(); println!("{}", (0..val).map(|_| val.to_string()).collect::>().join(" ")); println!("{}", factors.iter().flat_map(|&i| (0..i).map(|_| i.to_string()).collect::>()).collect::>().join(" ")); } else if n / h == 1 { for i in 0..factors.len() { for j in 0..factors[i] { println!("{}", factors[i]); } } } else { let val = factors.pop().unwrap(); for i in 0..factors.len() { for j in 0..factors[i] { println!("{} {}", val, factors[i]); } } } } else { println!("-1"); } }