const fn gcd(a: u64, b: u64) -> u64 { let mut x = (a, b); while x.1 > 0 { x = (x.1, x.0 % x.1); } x.0 } fn main() { let mut xx = String::new(); std::io::Read::read_to_string(&mut std::io::stdin(), &mut xx).ok(); let xx: Vec = xx.split_whitespace().skip(1).flat_map(str::parse).collect(); let gcd = xx.iter().fold(xx[0], |acc, &x| gcd(acc, x)); println!( "{}", xx.iter() .map(|&n| (n / gcd).to_string()) .collect::>() .join(":") ); }