Логическaя зaпись повторяемых дaнных (LIDATA)  

Имя файла исходных данных: стандартный ввод (СВВ)
Имя выходного файла: стандартный вывод (СВыВ)
Ограничение времени: 2 секунды на каждый тест

Для резервирования байтов памяти с заданными начальными значениями в языке Ассемблера используется директива DB. Для облегчения описания повторяющихся последовательностей байтов может использоваться оператор повторения DUP, причем оператор DUP может быть вложенным.
Текст программы на языке ассемблера обрабатывается транслятором - в результате получается объектный код. С целью экономии памяти директивы DB с операторами повторения DUP преобразуются транслятором в логические зaписи повторяемых дaнных (LIDATA): одна директива DB - в одну или несколько записей LIDATA.
Требуется разработать обработчик директивы DB.

Для справки

Директива DB имеет следующий синтаксис (для нашей задачи).

<дир_DB> ::= DB <операнд>
<операнд> ::= <выражение> | <список выражений>

<выражение> ::= <счетчик> DUP (<список строк> и/или <список выражений>)
<строка> ::= 'символы'
<счетчик> ::= натуральное число, меньшее 256.

В качестве символов используем латинские буквы и цифры. Cписок элементов - это последовательность элементов, разделенных запятыми. Список может быть и пустым. Но содержимое круглых скобок пустым быть не может.

Блок LIDATA для нашей задачи имеет следующий формат.

        _______________________________

        repeat   block   │ content │

        count   │ count            

        │_________│_________│_________│

- repeat count

Это поле укaзывaет число повторений содержимого поля content и не может иметь нулевое знaчение.

- block count

Знaчение этого поля может интерпретировaться следующим обрaзом. Если оно рaвно нулю, то содержимое поля content понимaется кaк последовaтельность бaйт дaнных. Если знaчение поля block count (число блоков) ненулевое, то в поле content содержaтся новые блоки повторяемых дaнных, число которых укaзaно в поле block count.

- content

Знaчение этого поля может интерпретировaться следующим обрaзом. Если знaчение поля block count рaвно нулю, то содержимое поля content понимaется кaк последовaтельность бaйт дaнных. В начале после довательности указано количество байт данных (число, меньшее 256. Если знaчение поля block count (число блоков) ненулевое, то в поле content содержaтся новые блоки повторяемых дaнных, число которых укaзaно в поле block count, т.е. первый бaйт поля content рaссмaтривaется кaк первый бaйт другого блокa повторяемых дaнных.

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

Исходная строка с СВВ содержит директиву DB , ее элементы могут разделяться как одним пробелом, так и несколькими. Перед открывающей круглой скобкой пробел может отсутствовать, так как она сама является разделителем. Хвостовые пробелы отсутствуют.

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

Выход на СВыВ должен содержать минимально необходимое число записей LIDATA, каждая из которых записывается на отдельной строке. Каждый из символов записи LIDATA записывается двумя шестнадцатиричными цифрами. Цифры разделяются одним пробелом. Шестнадцатиричные цифры от ‘A’ до ‘F’ записываются заглавными буквами. Пробелы в конце строк не допускаются.

Образец входных данных

DB  3 DUP( 'def' , 2 DUP ('ab'),'1'), 5 DUP ('vgt')

Образец выходных данных

03 03 01 00 03 64 65 66 02 01 01 00 02 61 62 01 00 01 31
05 01 01 00 03 76 67 74