eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Перестановки

Перестановки

Задано множество из \textbf{n} различных натуральных чисел. Перестановку элементов этого множества назовем \textbf{k}\textit{-перестановкой}, если для любых двух соседних элементов этой перестановки их наибольший общий делитель не менее \textbf{k}. Например, если задано множество элементов \textbf{S} = \{\textbf{6}, \textbf{3}, \textbf{9}, \textbf{8}\}, то перестановка \{\textbf{8}, \textbf{6}, \textbf{3}, \textbf{9}\} является \textbf{2}\textit{-перестановкой}, а перестановка \{\textbf{6}, \textbf{8}, \textbf{3}, \textbf{9}\} -- нет. Перестановка \{\textbf{p_1}, \textbf{p_2}, …, \textbf{p_n}\} будет \textit{лексикографически меньше }перестановки \{\textbf{q_1}, \textbf{q_2}, …, \textbf{q_n}\}, если существует такое натуральное число \textbf{i} (\textbf{1} ≤ \textbf{i} ≤ \textbf{n}), для которого \textbf{p_j}\textit{ = }\textbf{q_j} при \textbf{j}\textit{ < }\textbf{i} и \textbf{p_i}\textit{ < }\textbf{q_i}. В качестве примера упорядочим все \textbf{k}\textit{-перестановки за}данного выше множества в лексикографическом порядке. Например, существует ровно четыре \textbf{2}\textit{-перестановки} множества \textbf{S}: \{\textbf{3}, \textbf{9}, \textbf{6}, \textbf{8}\}, \{\textbf{8}, \textbf{6}, \textbf{3}, \textbf{9}\}, \{\textbf{8}, \textbf{6}, \textbf{9}, \textbf{3}\} и \{\textbf{9}, \textbf{3}, \textbf{6}, \textbf{8}\}. Соответственно, первой \textbf{2}\textit{-перестановкой} в лексикографическом порядке является множество \{\textbf{3}, \textbf{9}, \textbf{6}, \textbf{8}\}, а четвертой -- множество \{\textbf{9}, \textbf{3}, \textbf{6}, \textbf{8}\}. Напишите программу, которая находит \textbf{m}-ую \textbf{k}\textit{-перестановку} в этом порядке. \InputFile Первая строка содержит три натуральных числа \textbf{n }(\textbf{1 }≤\textit{ }\textbf{n }≤ \textbf{16}), \textbf{m}\textit{\textbf{ }}и \textbf{k }\textit{(}\textbf{1 }\textit{≤ }\textbf{m}\textit{, }\textbf{k }\textit{≤ }\textbf{10^9}\textit{)}. Вторая строка содержит \textbf{n}\textit{\textbf{ }}различных натуральных чисел, не превосходящих \textbf{10^9}. \OutputFile Вывести \textbf{m}-ую \textbf{k}-перестановку заданного множества или -\textbf{1}, если такой нет.
Лимит времени 2 секунды
Лимит использования памяти 64 MiB
Входные данные #1
1 1 1
1
Выходные данные #1
1
Источник 2009 Областная олимпиада школьников по информатике, Вологда, Задача H