E. Эйлеров обход
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Эйлер — маленький милый бельчонок. Когда приходит осень, он запасается желудями на зиму. Интересный факт, что Эйлер обычно собирает желуди очень специфичным способом. Дерево, с которого он собирает желуди, можно представить как $$$n$$$ желудей, соединенных $$$n - 1$$$ веткой таким образом, что есть ровно один путь между каждой парой желудей. Пронумеруем желуди от $$$1$$$ до $$$n$$$.

Бельчонок выбирает один из желудей (не обязательно с номером $$$1$$$) как старт, затем обходит все желуди способом, который называется «Эйлеров обход» (см. примечание), собирая каждый из желудей, когда он посещает его в последний раз.

Сегодня утром Кейт наблюдала за Эйлером. Она записала на листочке все желуди, которые посетил Эйлер на своем пути. К сожалению, на пути домой она попала под дождь и часть чисел теперь невозможно прочитать. Девочка очень расстроилась, так как свои наблюдения она должна была показать учителю.

«Может быть, если я угадаю пропавшие числа, я все еще смогу показать это учителю!» — подумала Кейт. Помогите ей, восстановите любой Эйлеров обход некоторого дерева или скажите, что у нее где-то ошибка.

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

Первая строка содержит одно целое число $$$n$$$ ($$$1 \leq n \leq 5 \cdot 10^5$$$) — количество желудей в дереве.

Вторая строка содержит $$$2n - 1$$$ целое число $$$a_1, a_2, \ldots, a_{2n-1}$$$ ($$$0 \leq a_i \leq n$$$) — Эйлеров обход, который выписала Кейт. $$$0$$$ означает число, которое пропало из-за дождя.

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

Если нет никакого Эйлерова обхода, удовлетворяющего описанию, выведите "no" в единственной строке.

Иначе выведите на первой строке "yes", а на второй строке выведите искомый Эйлеров обход.

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

Примеры
Входные данные
2
1 0 0
Выходные данные
yes
1 2 1
Входные данные
4
1 0 3 2 0 0 0
Выходные данные
yes
1 4 3 2 3 4 1
Входные данные
5
0 1 2 3 4 1 0 0 0
Выходные данные
no
Примечание

Эйлеров обход дерева с $$$n$$$ желудями — последовательность из $$$2n - 1$$$ индекса желудей такая, что каждый желудь встречается хотя бы один раз, первый и последний желуди совпадают, и каждые два соседних в обходе желудя соединены веткой.