Module: Modèles en programmation dynamique - 2


Problem

5 /5


Permutations

Problem

Soit un ensemble de n nombres naturels différents. Une permutation d'éléments de cet ensemble est appelée une k-permutation si pour deux éléments voisins de cette permutation leur plus grand commun diviseur est au moins k. Par exemple, si l'ensemble des éléments S = {6, 3, 9, 8} est donné, alors la permutation {8, 6, 3, 9} est une 2-permutation, et la permutation {6, 8, 3, 9} – non.

La permutation {p1, p2, …, pn} sera lexicographiquement inférieure à la permutation {q1< /sub>, q2, …, qn} s'il existe un entier positif i (1 ≤ i ≤ n) tel que pj = qj quand j < je et pje < qje.

A titre d'exemple, ordonnons toutes les k-permutations de l'ensemble ci-dessus dans l'ordre lexicographique. Par exemple, il y a exactement quatre 2-permutations de S : {3, 9, 6, 8}, {8, 6, 3, 9}, {8, 6, 9, 3} et {9, 3, 6 , 8} . En conséquence, la première 2-permutation dans l'ordre lexicographique est l'ensemble {3, 9, 6, 8}, et la quatrième – définir {9, 3, 6, 8}.

Vous devez écrire un programme qui vous permette de trouver la m-ième k-permutation dans cet ordre.

Entrée
Le fichier d'entrée de la première ligne contient trois nombres naturels – n (1 ≤ n ≤ 16), m et k (1 ≤ m, k ≤ 109). La deuxième ligne contient n nombres naturels distincts n'excédant pas 109. Tous les nombres dans les lignes sont séparés par des espaces.

Mentions légales
Il est nécessaire de sortir la m-ième k-permutation de l'ensemble donné ou –1 s'il n'y en a pas dans le fichier de sortie.
Exemples
# Entrée Sortie
1 4 1 2
6 8 3 9
3 9 6 8
2 4 4 2
6 8 3 9
9 3 6 8
3 4 5 2
6 8 3 9
-1