Module: Pattern nella programmazione dinamica - 2


Problem

5 /5


Permutazioni

Problem

Dato un insieme di n numeri naturali diversi. Una permutazione di elementi di questo insieme è chiamata k-permutazione se per due qualsiasi elementi vicini di questa permutazione il loro massimo comune divisore è almeno k. Ad esempio, se viene dato l'insieme di elementi S = {6, 3, 9, 8}, la permutazione {8, 6, 3, 9} è una permutazione 2 e la permutazione {6, 8, 3, 9} – n.

La permutazione {p1, p2, …, pn} sarà lessicograficamente minore della permutazione {q1< /sub>, q2, …, qn} se esiste un intero positivo i (1 ≤ i ≤ n) tale che pj = qj quando j < i e pi < qi.

Ad esempio, ordiniamo tutte le k-permutazioni dell'insieme precedente in ordine lessicografico. Ad esempio, ci sono esattamente quattro 2-permutazioni di S: {3, 9, 6, 8}, {8, 6, 3, 9}, {8, 6, 9, 3} e {9, 3, 6 , 8} . Di conseguenza, la prima 2-permutazione nell'ordine lessicografico è l'insieme {3, 9, 6, 8}, e la quarta – imposta {9, 3, 6, 8}.

Devi scrivere un programma che ti permetta di trovare la m-esima k-permutazione in questo ordine.

Inserimento
Il file di input nella prima riga contiene tre numeri naturali – n (1 ≤ n ≤ 16), m e k (1 ≤ m, k ≤ 109). La seconda riga contiene n numeri naturali distinti non superiori a 109. Tutti i numeri nelle righe sono separati da spazi.

Impressum
È necessario emettere la m-esima k-permutazione dell'insieme dato o –1 se non ce n'è nessuna nel file di output.
Esempi
# Input Uscita
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