eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Макросы

Макросы

prb208

Однажды Бараш решил поучаствовать в литературном конкурсе программистов. Стихотворения принимались на четырех языках: Assembly, Foxy, Lispy, Prology. Как старый поэт-программист, Бараш признавал только Assembly. Поэтому писать пришлось на нем. Он запустил свой верный edit.com под Dos 6.22 и приступил к делу. Учитывая то, что Бараш был ленивым программистом, он вовсю использовал макросы. Это чрезвычайно ускоряло процесс стихосложения, так как у Бараша было множество заготовок, как и у любого старого поэта-программиста.

Стих получился шикарным, но, посовещавшись со своей подругой Нюшей, Бараш понял, что стих недоступен для понимания подавляющего большинства ценителей искусства. Поэтому Бараш решил пожертвовать формой произведения, дабы донести его высший смысл. Для этого он решил отказаться от использования макроопределений в своем произведении, выполнив макроподстановку.

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

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

Дано стихотворение, содержащее макроопределения. Формат макроопределений имеет следующий вид (вместо каждого символа '_' во входном и выходном файлах будет стоять точно один пробел):

  1. Макроопределения: #identificator_{|text|}. Идентификатор (имя макроопределения) состоит не более, чем из 10 строчных латинских букв. Не встречается макроопределений с именем 'rep'.
  2. Макровызовы: ##identificator_
  3. Циклические макроопределения: #rep_n_{|text|}. n - целое число повторов текста (0 <= n <= 100).

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

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

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

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

Исправленный текст стихотворения.

Лимит времени 2 секунды
Лимит использования памяти 64 MiB
Входные данные #1
##a_
#a {a}##a 
#b {##a  #a {b}##a #c {##a } ##c }
##b ##c 
##a 
Выходные данные #1
a

a b b
a