A. Расписание автобусов
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Имеются две остановки автобусов A и B, и известно, что в течение дня $$$n$$$ автобусов совершают поездку от A до B. От остановки A до остановки B самым быстрым образом можно доехать за время $$$t$$$, но можно ехать и дольше, при этом автобусы могут произвольным образом обгонять друг друга в процессе следования по маршруту.

На каждой из остановок можно прочитать упорядоченный список моментов времени, когда на эту остановку приходит автобус, обозначим как $$$a_1 < a_2 < \ldots < a_n$$$ список для остановки A и как $$$b_1 < b_2 < \ldots < b_n$$$ список для остановки B. Автобусы всегда отъезжают от остановки A и всегда прибывают на остановку B вовремя, но порядок прибытия автобусов может отличаться от порядка отправления. Будем называть порядок прибытия корректным, если для каждого автобуса время его прибытия хотя бы на $$$t$$$ позже, чем время отправления.

Известно, что для соблюдения расписания автобус, отправляющийся в момент времени $$$a_i$$$, должен приехать не позже, чем в момент времени $$$b_{x_i}$$$, то есть $$$x_i$$$-м по счету. Иными словами, для каждого $$$i$$$ существует такой корректный порядок прибытия автобусов, где $$$i$$$-й отправленный автобус прибывает $$$x_i$$$-м (а остальные — как угодно), но не существует корректного порядка, где $$$i$$$-й отправленный автобус прибывает $$$(x_i + 1)$$$-м.

Формально, назовем перестановку $$$p_1, p_2, \ldots, p_n$$$ корректной, если $$$b_{p_i} \ge a_i + t$$$ для всех $$$i$$$. Тогда $$$x_i$$$ — максимальное значение $$$p_i$$$ среди всех корректных перестановок.

Вам известны числа $$$a_1, a_2, \ldots, a_n$$$ и $$$x_1, x_2, \ldots, x_n$$$, но не известны времена прибытия автобусов. Найдите какое-нибудь подходящее расписание $$$b_1, b_2, \ldots, b_n$$$, или определите, что такого расписания не существует.

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

В первой строке записаны два числа $$$n$$$ и $$$t$$$ ($$$1 \leq n \leq 200\,000$$$, $$$1 \leq t \leq 10^{18}$$$) — количество автобусов в расписании на обеих остановках и минимальное возможное время поездки автобуса от А до B.

Во второй строке записаны $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \leq a_1 < a_2 < \ldots < a_n \leq 10^{18}$$$), определяющие времена отправления автобусов от остановки A.

В третьей строке записаны $$$n$$$ чисел $$$x_1, x_2, \ldots, x_n$$$ ($$$1 \leq x_i \leq n$$$), $$$i$$$-е из которых означает максимально допустимую позицию в расписании автобусов на остановке B, которую мог занять автобус, отъехавший $$$i$$$-м от остановки A.

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

Если решение существует, в первой строке выведите слово «Yes» (без кавычек).

Во второй строке выведите $$$n$$$ целых чисел $$$b_1, b_2, \ldots, b_n$$$ ($$$1 \leq b_1 < b_2 < \ldots < b_n \leq 3 \cdot 10^{18}$$$). Можно показать, что если решение существует, то существует и решение, удовлетворяющее данному ограничению на значения $$$b_i$$$. Если правильных ответов несколько, то разрешается вывести любой из них.

Если подходящего расписания не существует, выведите слово «No» (без кавычек) в единственной строке вывода.

Примеры
Входные данные
3 10
4 6 8
2 2 3
Выходные данные
Yes
16 17 21
Входные данные
2 1
1 2
2 1
Выходные данные
No
Примечание

Рассмотрим первый пример и расписание $$$b_1, b_2, \ldots, b_n$$$ из примера.

Чтобы получить $$$x_1 = 2$$$ можно взять порядок прибытия автобусов $$$(2, 1, 3)$$$. Чтобы получить $$$x_2 = 2$$$ и $$$x_3 = 3$$$ можно выбрать порядок прибытия $$$(1, 2, 3)$$$. $$$x_1$$$ не равно $$$3$$$, потому что перестановки $$$(3, 1, 2)$$$ и $$$(3, 2, 1)$$$ (все возможные, в которых $$$1$$$-й автобус приезжает $$$3$$$-м по порядку) некорректны (некоторые автобусы приедут слишком рано), по тем же причинам $$$x_2$$$ не равно $$$3$$$.