Перестановки
시간 제한2초메모리 제한512 MB
서로 다른 n개의 정수가 주어질 때 이웃한 두 원소의 최대공약수가 k 이상인 순열을 사전순으로 나열하고, m번째 순열을 출력하거나 없으면 -1을 출력한다.
문제
서로 다른 개의 자연수로 이루어진 집합이 주어진다. 이 집합의 원소를 나열한 순열에서 이웃한 두 원소의 최대 공약수가 모두 이상이면 그 순열을 -순열이라고 한다. 예를 들어 집합 에서 순열 는 -순열이지만, 순열 는 -순열이 아니다.
순열 이 순열 보다 사전순으로 앞선다는 것은, 인 모든 에 대해 이고 인 자연수 ()가 존재한다는 뜻이다.
주어진 집합의 모든 -순열을 사전순으로 나열하자. 예를 들어 집합 의 -순열은 모두 네 개이다. , , , . 따라서 사전순으로 첫 번째 -순열은 이고, 네 번째는 이다. 이 순서에서 번째 -순열을 구해야 한다.
입력
입력 파일의 첫째 줄에는 세 자연수 (), , ()가 주어진다. 둘째 줄에는 이하인 서로 다른 자연수 개가 주어진다.
출력
출력 파일에 주어진 집합의 번째 -순열을 출력한다. 그러한 순열이 없으면 -1을 출력한다.