C. Перерывы на кофе
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Монокарп недавно устроился на работу, его рабочий день длится $$$m$$$ минут. Также известны $$$n$$$ минут $$$a_1, a_2, \dots, a_n$$$, в которые он хочет сделать перерыв на кофе (в этой задаче считаем, что Монокарп пьет кофе ровно минуту).

Однако начальнику Монокарпа не нравится, когда тот пьет кофе слишком часто, поэтому Монокарп хочет проставить каждой из заданных минут $$$a_i$$$ номер рабочего дня, в который он устроит перерыв на кофе в эту минуту, так, чтобы каждый день между любой парой перерывов на кофе было как минимум $$$d$$$ минут рабочего времени. При этом Монокарп хочет попить кофе $$$n$$$ раз за минимальное количество именно рабочих дней (исключая выходные). Считайте, что между любыми двумя последовательными рабочими днями проходит более $$$d$$$ минут.

Определите для каждой из $$$n$$$ заданных минут для перерывов на кофе, в какой из дней соответствующий перерыв нужно сделать. При этом количество дней нужно минимизировать.

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

Первая строка содержит три целых числа $$$n$$$, $$$m$$$, $$$d$$$ $$$(1 \le n \le 2\cdot10^{5}, n \le m \le 10^{9}, 1 \le d \le m)$$$ — количество перерывов, длина рабочего дня и минимальное количество минут между двумя перерывами на кофе.

Вторая строка содержит $$$n$$$ различных целых чисел $$$a_1, a_2, \dots, a_n$$$ $$$(1 \le a_i \le m)$$$, где $$$a_i$$$ равно минуте рабочего дня, в которую Монокарп хочет пить кофе.

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

В первую строку выведите минимальное количество дней, в которые Монокарп успеет сделать описанные $$$n$$$ перерывов на кофе.

Во вторую строку выведите $$$n$$$ целых чисел, причем $$$i$$$-е число должно быть равно номеру рабочего дня, в который нужно сделать перерыв на кофе в минуту $$$a_i$$$. Дни нужно нумеровать последовательными натуральными числами, начиная с $$$1$$$. Если ответов несколько, разрешается вывести любой из них.

Примеры
Входные данные
4 5 3
3 5 1 2
Выходные данные
3
3 1 1 2
Входные данные
10 10 1
10 5 7 4 6 3 2 1 9 8
Выходные данные
2
2 1 1 2 2 1 2 1 1 2
Примечание

В первом примере Монокарп может сделать два перерыва на кофе в первый день (в минуты $$$1$$$ и $$$5$$$, между ними пройдёт $$$3$$$ минуты), один перерыв на кофе во второй день (в минуту $$$2$$$) и один перерыв на кофе в третий день (в минуту $$$3$$$).

Во втором примере Монокарп может сделать все перерывы в нечетные минуты в первый день, а все перерывы в четные минуты во второй.