Ограничение по времени: 2.000 секунд
Ограничение по памяти: 500.000 мегабайт
Вероника изучает неизвестный язык программирования.
В документации дано описание этого языка. Известно, что программа на этом языке является правильной скобочной последовательностью (ПСП). ПСП это строка, состоящая из символов (
и )
. Пустая строка является ПСП. Конкатенация двух, возможно разных, ПСП является ПСП. ПСП, взятая в скобки, является ПСП. Две скобки в ПСП называются парными, если подстрока, начинающаяся сразу после первой из скобок и заканчивающаяся прямо перед второй, является ПСП. Несложно доказать, что в любой ПСП длины n·2 есть ровно n пар парных скобок. Для простоты, будем называть их просто парами скобок.
Известно, что программа на этом языке содержит n пар скобок. А также, известно мультимножество расстояний между скобками в каждой паре. Иными словами, для каждой пары скобок было найдено ai - количество символов между ними.
Теперь Вероника пытается восстановить программу. Помогите ей найти любую подходящую ПСП, либо сообщите, что такой не существует.
В первой строке дано одно целое число n - количество пар скобок в описании программы (1 ≤ n ≤ 20).
Во второй строке даны n целых чисел ai - мультимножество расстояний между скобками в каждой паре (0 ≤ ai ≤ n·2).
Если существует ПСП, которая удовлетворяет всем ограничениям, в первой строке выведите Yes
, а во второй - строку из символов (
и )
длины n·2 - подходящую ПСП. Если существует несколько решений, выведите любое.
Если подходящей ПСП не существует, в единственной строке выведите No
.
input | output |
---|---|
1 0 |
Yes () |
2 0 0 |
Yes ()() |
2 2 0 |
Yes (()) |
1 2 |
No |
5 0 0 0 2 6 |
Yes ()(()(())) |