fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let mut n: u64 = n.trim().parse().unwrap(); let mut factors = std::collections::HashMap::new(); for i in 2.. { if i * i > n { break; } while n % i == 0 { n /= i; *factors.entry(i).or_insert(0) += 1; } } if n > 1 { *factors.entry(n).or_insert(0) += 1; } let mut a = 1; let mut b = 1; for (&p, &c) in &factors { a *= p.pow(c / 2); b *= p.pow(c % 2); } println!("{a} {b}"); }