Тентен продает оружие в магазине для ниндзя. Сегодня она хочет продать \(n\) сюрикенов стоимостью \(1\), \(2\), ..., \(n\) рё (местная валюта). В течение дня она будет выкладывать сюрикены на витрину, которая в начале дня пуста. Работа в магазине достаточно простая: в каждый момент времени либо Тентен выкладывает на витрину очередной сюрикен из еще не выложенных, либо к ней в магазин заходит ниндзя и покупает сюрикен с витрины. Поскольку ниндзя очень экономные, то в магазине они покупают самый дешевый из сюрикенов, которые сейчас лежат на витрине. В течение дня Тентен ведет список событий, и в ее списке есть два типа записей:
- + означает, что она выкладывает на витрину очередной сюрикен;
- - x означает, что у нее купили сюрикен стоимостью \(x\).
Сегодня у Тентен выдался удачный день, и у нее купили все сюрикены. В конце дня ей стало интересно, не ошиблась ли она в своих записях, и в каком порядке она могла выкладывать сюрикены, чтобы у нее получился такой список.
Выходные данные
Необходимо вывести «YES», если такой список мог получиться, и «NO» иначе.
Если список получиться мог, то в следующей строке необходимо вывести \(n\) различных чисел через пробел — стоимости сюрикенов в порядке, в котором Тентен должна выкладывать их на витрину. Если существует несколько решений, выведите любое из них.
Примечание
В первом примере Тентен сначала выложила на витрину сюрикены стоимостью \(4\) и \(2\). После этого к ней пришел покупатель и забрал самый дешевый сюрикен стоимостью \(2\). После этого к оставшемуся сюрикену стоимостью \(4\) она выложила сюрикен стоимостью \(3\). После этого к ней пришел покупатель и забрал сюрикен стоимостью \(3\). После этого она выложила сюрикен стоимостью \(1\). После этого к ней пришел покупатель и забрал сюрикен стоимостью \(1\). Потом к ней пришел еще один покупатель и забрал последний сюрикен стоимостью \(4\). Обратите внимание, что порядок \([2, 4, 3, 1]\) также является верным.
Во втором примере первый покупатель пришел и купил сюрикен раньше, чем Тентен выложила хотя бы один сюрикен на витрину, что, очевидно, невозможно.
В третьем примере Тентен выложила на витрину все сюрикены, после этого к ней пришел покупатель и забрал сюрикен стоимостью \(2\). Такого быть не могло, потому что этот сюрикен не был самым дешевым из тех, что лежали на витрине (ведь там был еще сюрикен стоимостью \(1\)).
Примеры
| № | Входные данные | Выходные данные |
|
1
|
4 + + - 2 + - 3 + - 1 - 4
|
YES
4 2 3 1
|
|
2
|
1 - 1 +
|
NO
|
|
3
|
3 + + + - 2 - 1 - 3
|
NO
|