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 |
表>