B. K-покраска массива
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Задан массив $$$a$$$, состоящий из $$$n$$$ целых чисел.

Вам необходимо покрасить этот массив в $$$k$$$ цветов таким образом, чтобы:

  • Каждый элемент массива должен быть покрашен в какой-то цвет;
  • Для всех $$$i$$$ от $$$1$$$ до $$$k$$$ существует хотя бы один элемент массива, покрашенный в $$$i$$$-й цвет;
  • Для всех $$$i$$$ от $$$1$$$ до $$$k$$$ все элементы, покрашенные в $$$i$$$-й цвет, должны быть различны.

Очевидно, что такой раскраски может не существовать. В этом случае выведите «NO». Иначе выведите «YES» и любую раскраску (то есть числа $$$c_1, c_2, \dots c_n$$$, где $$$1 \le c_i \le k$$$, а $$$c_i$$$ означает цвет $$$i$$$-го элемента заданного массива), удовлетворяющую ограничениям, описанным выше. Если существует несколько возможных ответов, выведите любой.

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

Первая строка входных данных содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le k \le n \le 5000$$$) — длина массива $$$a$$$ и количество цветов соответственно.

Вторая строка входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 5000$$$) — элементы массива $$$a$$$.

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

Если ответа не существует, выведите «NO». Иначе выведите «YES» и любую раскраску (то есть числа $$$c_1, c_2, \dots c_n$$$, где $$$1 \le c_i \le k$$$, а $$$c_i$$$ означает цвет $$$i$$$-го элемента заданного массива), удовлетворяющую ограничениям, описанным выше. Если существует несколько возможных ответов, выведите любой.

Примеры
Входные данные
4 2
1 2 2 3
Выходные данные
YES
1 1 2 2
Входные данные
5 2
3 2 1 2 3
Выходные данные
YES
2 1 1 2 1
Входные данные
5 2
2 1 1 2 1
Выходные данные
NO
Примечание

В первом тестовом примере также допустим ответ $$$2~ 1~ 2~ 1$$$.

Во втором тестовом примере также допустим ответ $$$1~ 1~ 1~ 2~ 2$$$.

Также существуют другие возможные ответы на оба тестовых примера.