#include #include #include #include #include template T gcd(T a, T b) { if (b == 0) { return a; } return gcd(b, a % b); } template T lcm(T a, T b) { return a / gcd(a, b) * b; } template void sort_by_lcm(std::vector& sequence) { auto n = sequence.size(); for (auto i = 0; i < n - 1; i++) { auto m_idx = i + 1; auto m_val = lcm(sequence[i], sequence[m_idx]); for (auto j = i + 2; j < n; j++) { auto new_val = lcm(sequence[i], sequence[j]); if (new_val < m_val || (new_val == m_val && sequence[j] < sequence[m_idx])) { m_idx = j; m_val = new_val; } } std::swap(sequence[m_idx], sequence[i + 1]); } } int main() { std::cin.tie(0); std::ios::sync_with_stdio(false); unsigned int n; std::cin >> n; std::vector as; for (auto i = 0; i < n; i++) { unsigned int a; std::cin >> a; as.push_back(a); } sort_by_lcm(as); for (auto i = 0; i < n; i++) { std::cout << as[i]; if (i < n - 1) { std::cout << " "; } else { std::cout << std::endl; } } return EXIT_SUCCESS; }