Problem 
                         
                                 给定一组 n 个不同的自然数。如果此排列的任何两个相邻元素的最大公约数至少为 k,则此集合的元素排列称为 k-排列。例如,如果给定元素集 S = {6, 3, 9, 8},则排列 {8, 6, 3, 9} 是一个 2-排列,而排列 {6, 8, 3, 9} –没有。
排列 {p
1, p
2, …, p
n} 将在字典序上小于排列 {q
1< /sub>, q2, …, qn} 如果存在正整数 i (1 ≤ i ≤ n) 使得 pj = qj 当 j <;我和 pi < qi.
例如,让我们按字典顺序对上述集合的所有 k-排列进行排序。例如,S 正好有四个 2-排列:{3, 9, 6, 8}、{8, 6, 3, 9}、{8, 6, 9, 3} 和 {9, 3, 6 , 8} 。因此,字典顺序中的第一个 2-排列是集合 {3, 9, 6, 8},第四个 -设置 {9, 3, 6, 8}。
你需要编写一个程序,让你可以按此顺序找到第 m 个 k 排列。
输入
第一行的输入文件包含三个自然数—— n (1 ≤ n ≤ 16), m 和 k (1 ≤ m, k ≤ 109)。第二行包含 n 个不超过 109 的不同自然数。行中的所有数字均以空格分隔。
印记
有必要输出给定集合的第 m 个 k-排列,如果输出文件中没有,则输出 –1。
例子
<头>
| # | 
输入 | 
输出 | 
东西>
<正文>
| 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 | 
表>