언젠가 정렬이 될 수 있으면 좋겠네.
시간 제한2초메모리 제한1024 MB
인접한 두 원소가 서로소일 때만 자리를 바꿀 수 있는 수열에서, 도달 가능한 수열 중 사전 순으로 가장 작은 수열을 구한다.
문제
개의 양의 정수로 이루어진 수열 가 주어진다. 당신은 원하는 만큼 다음 조작을 할 수 있다. 조작을 하지 않는 것도 가능하다.
- 수열에서 인접한 원소가 서로소일 때, 그 두 원소의 순서를 바꾼다.
두 수의 최대공약수가 인 경우 두 수를 서로소라고 한다. 이때, 조작 이후 사전 순으로 최소인 수열 를 구해보자.
입력
첫째 줄에 수열의 길이 이 주어진다.
둘째 줄에 개의 양의 정수 이 공백으로 구분되어 주어진다.
출력
조작 이후 사전 순으로 최소인 수열 를 한 줄에 공백으로 구분하여 출력한다.
힌트
어떤 수열이 다른 수열보다 사전 순으로 작다는 것은 다음을 의미한다.
- 두 수열 중 첫 번째 수가 작은 쪽이 사전 순으로 작다.
- 두 수열의 첫 번째 수가 같다면, 첫 번째 수를 빼고 두 수열을 다시 비교했을 때 사전 순으로 작은 쪽이 사전 순으로 작다.
- 길이가 인 수열은 다른 어떤 수열보다 사전 순으로 작다.
사전 순으로 최소인 수열은 다른 모든 수열보다 사전 순으로 작거나 같은 수열을 말한다.