B. Кратность разностей
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дан набор из 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 — выбранные числа. Если существует несколько подходящих решений, выведите любое из них.

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