require "prime" def f(a) pairs = a.map{|n| r = n.prime_division next [1, []] if r.empty? [n, r] } # p pairs n, f = pairs.shift r = [n] pairs.sort! while !pairs.empty? pair = pairs.min_by{|nn, ff| t = f.inject(1){|r, (v, i)| # p [r, v, i] vv, ii = ff.assoc(v) vv ? r * v * [i, ii].min : r } [n * nn / t, nn] } pairs.delete_at(pairs.index(pair)) n, f = pair r << n end r end N = gets.to_i A = gets.split.take(N).map(&:to_i) puts f(A) * " "