D. Сюрикены
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Тентен продает оружие в магазине для ниндзя. Сегодня она хочет продать $$$n$$$ сюрикенов стоимостью $$$1$$$, $$$2$$$, ..., $$$n$$$ рё (местная валюта). В течение дня она будет выкладывать сюрикены на витрину, которая в начале дня пуста. Работа в магазине достаточно простая: в каждый момент времени либо Тентен выкладывает на витрину очередной сюрикен из еще не выложенных, либо к ней в магазин заходит ниндзя и покупает сюрикен с витрины. Поскольку ниндзя очень экономные, то в магазине они покупают самый дешевый из сюрикенов, которые сейчас лежат на витрине. В течение дня Тентен ведет список событий, и в ее списке есть два типа записей:

  • + означает, что она выкладывает на витрину очередной сюрикен;
  • - x означает, что у нее купили сюрикен стоимостью $$$x$$$.

Сегодня у Тентен выдался удачный день, и у нее купили все сюрикены. В конце дня ей стало интересно, не ошиблась ли она в своих записях, и в каком порядке она могла выкладывать сюрикены, чтобы у нее получился такой список.

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

В первой строке дано целое число $$$n$$$ ($$$1\leq n\leq 10^5$$$) — количество сюрикенов.

В следующих $$$2n$$$ строках дана информация о произошедших событиях в формате, описанном выше. Гарантируется, что среди событий ровно $$$n$$$ событий первого типа, а также, что во всех событиях второго типа присутствуют все числа от $$$1$$$ до $$$n$$$ по одному разу.

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

Необходимо вывести «YES», если такой список мог получиться, и «NO» иначе.

Если список получиться мог, то в следующей строке необходимо вывести $$$n$$$ различных чисел через пробел — стоимости сюрикенов в порядке, в котором Тентен должна выкладывать их на витрину. Если существует несколько решений, выведите любое из них.

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

В первом примере Тентен сначала выложила на витрину сюрикены стоимостью $$$4$$$ и $$$2$$$. После этого к ней пришел покупатель и забрал самый дешевый сюрикен стоимостью $$$2$$$. После этого к оставшемуся сюрикену стоимостью $$$4$$$ она выложила сюрикен стоимостью $$$3$$$. После этого к ней пришел покупатель и забрал сюрикен стоимостью $$$3$$$. После этого она выложила сюрикен стоимостью $$$1$$$. После этого к ней пришел покупатель и забрал сюрикен стоимостью $$$1$$$. Потом к ней пришел еще один покупатель и забрал последний сюрикен стоимостью $$$4$$$. Обратите внимание, что порядок $$$[2, 4, 3, 1]$$$ также является верным.

Во втором примере первый покупатель пришел и купил сюрикен раньше, чем Тентен выложила хотя бы один сюрикен на витрину, что, очевидно, невозможно.

В третьем примере Тентен выложила на витрину все сюрикены, после этого к ней пришел покупатель и забрал сюрикен стоимостью $$$2$$$. Такого быть не могло, потому что этот сюрикен не был самым дешевым из тех, что лежали на витрине (ведь там был еще сюрикен стоимостью $$$1$$$).