만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

언젠가 정렬이 될 수 있으면 좋겠네

면접 대비

시간 제한2초메모리 제한1024 MB

요약
인접한 두 수가 서로소이면 순서를 바꿀 수 있습니다. 이 연산을 반복해서 만들 수 있는 사전순으로 가장 작은 수열을 구합니다.
난이도

보통10점 중 6점

유형
위상 정렬, 그리디, 정수론
정답자
아직 제출이 없습니다

문제

NN개의 양의 정수로 이루어진 수열 A=[A1,⋯ ,AN]A = [A_1, \cdots, A_N]가 주어진다. 당신은 원하는 만큼 다음 조작을 할 수 있다. 조작을 하지 않는 것도 가능하다.

  • 수열에서 인접한 원소가 서로소일 때, 그 두 원소의 순서를 바꾼다.

두 수의 최대공약수가 11인 경우 두 수를 서로소라고 한다. 조작 이후 사전 순으로 최소인 수열 AA를 구해보자.

입력

첫째 줄에 수열의 길이 NN이 주어진다. (1≤N≤3 000)(1 \leq N \leq 3\,000)

둘째 줄에 NN개의 양의 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다. (1≤Ai≤109)(1 \leq A_i \leq 10^9)

출력

조작 이후 사전 순으로 최소인 수열 AA를 한 줄에 공백으로 구분하여 출력한다.

힌트

어떤 수열이 다른 수열보다 사전 순으로 작다는 것은 다음을 뜻한다.

  • 두 수열의 첫 번째 수가 다르면, 첫 번째 수가 작은 쪽이 사전 순으로 작다.
  • 두 수열의 첫 번째 수가 같다면, 첫 번째 수를 뺀 나머지를 다시 비교했을 때 사전 순으로 작은 쪽이 작다.

길이가 00인 수열은 다른 어떤 수열보다 사전 순으로 작다. 사전 순으로 최소인 수열은 다른 모든 수열보다 사전 순으로 작거나 같은 수열이다.

예제1

  1. 예제 1

    입력
    5
    7 3 4 2 6
    
    예상 출력
    3 4 2 6 7