#include #include #include using namespace std; struct sequence { int a, lcm; }; int gcd(int a, int b) { return b ? gcd(b, a % b) : a; } int LCM(int a, int b) { return a * b / gcd(a, b); } int main() { int min; size_t N, tmp; sequence array[10000]; cin >> N; for (size_t i = 0; i < N; ++i) cin >> array[i].a; for (size_t i = 0; i < N - 1; ++i) { min = INT_MAX; for (size_t j = i + 1; j < N; ++j) { array[j].lcm = LCM(array[i].a, array[j].a); if (min == array[j].lcm && array[tmp].a > array[j].a) tmp = j; else if (min > array[j].lcm) { min = array[j].lcm; tmp = j; } } swap(array[i + 1], array[tmp]); } for (size_t i = 0; i < N; ++i) cout << array[i].a << ' '; }