Олимпиадный тренинг

Задача . D. Shohag любит НОД


У Shohag есть целое число \(n\) и множество \(S\) из \(m\) различных целых чисел. Помогите ему найти лексикографически наибольший\(^{\text{∗}}\) массив целых чисел \(a_1, a_2, \ldots, a_n\) такой, что \(a_i \in S\) для каждого \(1 \le i \le n\), а также для всех пар \(1 \le i \lt j \le n\) должно выполняться \(a_{\operatorname{gcd}(i, j)} \neq \operatorname{gcd}(a_i, a_j)\)\(^{\text{†}}\). Или скажите, что таких массивов не существует.

\(^{\text{∗}}\)Массив \(a\) лексикографически больше массива \(b\) такой же длины, если \(a \ne b\), и в первой позиции, где \(a\) и \(b\) различны, в массиве \(a\) элемент больше, чем соответствующий элемент в \(b\).

\(^{\text{†}}\)\(\gcd(x, y)\) обозначает наибольший общий делитель (НОД) чисел \(x\) и \(y\).

Входные данные

Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит одно целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа \(n\) и \(m\) (\(1 \le m \le n \le 10^5\)).

Вторая строка содержит \(m\) различных целых чисел в порядке возрастания, представляющих элементы множества \(S\) (\(1 \le x \le n\) для каждого \(x \in S\)).

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(3 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных, если нет решения, выведите \(-1\). Иначе выведите \(n\) целых чисел — лексикографически наибольший массив, удовлетворяющий условиям.

Примечание

В первом наборе входных данных каждый элемент массива принадлежит заданному множеству \(S = \{3, 4, 6\}\), а все пары индексов массива удовлетворяют необходимым условиям. В частности, для пары \((2, 3)\): \(a_{\operatorname{gcd}(2, 3)} = a_1 = 6\) и \(\operatorname{gcd}(a_2, a_3) = \operatorname{gcd}(4, 4) = 4\), поэтому они не равны. Существуют и другие массивы, удовлетворяющие условиям, но этот — лексикографически наибольший.

В третьем наборе входных данных массива не существует, так как возможно только \(a = [2, 2]\), но для этого массива для пары \((1, 2)\) имеем: \(a_{\operatorname{gcd}(1, 2)} = a_1 = 2\) и \(\operatorname{gcd}(a_1, a_2) = \operatorname{gcd}(2, 2) = 2\), то есть они равны, что недопустимо!


Примеры
Входные данныеВыходные данные
1 3
6 3
3 4 6
1 1
1
2 1
2
6 4 4 3 4 3 
1 
-1

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя