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

Задача . B. Кратность разностей


Дан набор из n целых чисел. Требуется выбрать из них ровно k чисел таким образом, что разность любых двух выбранных чисел будет делиться на m, либо определить, что это сделать невозможно.

Числа могут повторяться как в исходном наборе, так и среди выбранных чисел, но количество вхождений любого числа среди выбранных не должно превосходить количества его вхождений в исходный набор.

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

В первой строке входных данных находятся три целых числа n, k и m (2 ≤ k ≤ n ≤ 100 000, 1 ≤ m ≤ 100 000) — количество чисел в наборе, количество чисел, которые нужно выбрать, и требуемый делитель разности любых двух выбранных чисел.

Во второй строке входных данных находятся n целых чисел a1, a2, ..., an (0 ≤ ai ≤ 109) — числа в наборе.

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

Если выбрать k чисел требуемым образом невозможно, то в единственной строке выведите «No» (без кавычек).

Иначе, в первой строке выходных данных выведите «Yes» (без кавычек). Во второй строке выведите k целых чисел b1, b2, ..., bk — выбранные числа. Если существует несколько подходящих решений, выведите любое из них.


Примеры
Входные данныеВыходные данные
1 3 2 3
1 8 4
Yes
1 4
2 3 3 3
1 8 4
No
3 4 3 5
2 7 7 7
Yes
2 7 7

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

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