Арифметические выражения, использующие сложение, вычитание, умножение, деление и возведение в степень определяются следующей грамматикой:
<выражение> -> <слагаемое> | <выражение> + <слагаемое> | <выражение> - <слагаемое>
<слагаемое> -> <множитель> | <слагаемое> \(\times\) <множитель> | <слагаемое> / <множитель>
<множитель> -> <элемент> | <элемент> ^ <множитель>
<элемент> -> <переменная> | (<выражение>)
<переменная> -> a | b | ... | z
Сложение, вычитание, умножение и деление левоассоциативны, а возведение в степень правоассоциативно.
Для арифметического выражения определено его дерево разбора. Это двоичное дерево, в котором внутренние узлы соответствуют бинарным операциям, а листья соответствуют переменным. Дерево строится рекурсивно.
Во входном файле содержится корректное арифметическое выражение, состоящее не более чем из 400 символов.
В выходной файл выведите дерево разбора. Дерево разбора для переменной должно быть размера \(1\times 1\) и содержать эту переменную. Дерево, в корне которого записана операция, с поддеревьями \(T_1\) и \(T_2\), которые имеют размеры \(h_1\times w_1\) и \(h_2 \times w_2\) соответственно, должно быть размера \((max [h_1; h_2] + 2) \times (w_1 + w_2 + 5)\). Подробнее о формате вывода можно узнать, изучив пример выходного файла (см. ниже). Следует использовать следующие вспомогательные символы: минус ‘-’ (код ASCII 45), точка ‘.’ (код ASCII 46), вертикальная черта ‘|’ (код ASCII 124), квадратные скобки ‘[’ и ‘]’ (коды ASCII 91 and 93).
(a+b+c)*(d-a)
.----[*]----. | | .----[+]-. .-[-]-. | | | | .-[+]-. c d a | | a b
Ася Вуткина - известный футбольный комментатор. Будучи профессионалом своего дела, Ася тщательно следит за всеми матчами всех европейских чемпионатов.
Благодаря накопленной информации, Ася может во время трансляции матча сообщить какую-нибудь интересную статистику, например: "Индзаги третий матч подряд забивает гол на 9-й минуте" или "Матерацци никогда не открывает счет в матче".
Но мозг Аси не безграничен, а помнить всю историю футбола просто невозможно. Поэтому Ася попросила вас написать программу, которая собирает статистику матчей и умеет отвечать на некоторые запросы, касающиеся истории футбола.
Информация о матче сообщается программе в следующей форме:
"Название 1-й команды" - "Название 2-й команды" Счет 1-й команды:Счет 2-й команды
Автор 1-го забитого мяча 1-й команды Минута, на которой был забит мяч'
Автор 2-го забитого мяча 1-й команды Минута, на которой был забит мяч'
...
Автор последнего забитого мяча 1-й команды Минута, на которой был забит мяч'
Автор 1-го забитого мяча 2-й команды Минута, на которой был забит мяч'
...
Автор последнего забитого мяча 2-й команды> <Минута, на которой был забит мяч>'
Запросы к программе бывают следующих видов:
Total goals for Название команды
- количество голов, забитое данной командой за все матчи.
Mean goals per game for Название команды
- среднее количество голов, забиваемое данной командой за один матч. Гарантирутся, что к моменту подачи такого запроса команда уже сыграла хотя бы один матч.
Total goals by Имя игрока
- количество голов, забитое данным игроком за все матчи.
Mean goals per game by Имя игрока
- среднее количество голов, забиваемое данным игроком за один матч его команды. Гарантирутся, что к моменту подачи такого запроса игрок уже забил хотя бы один гол.
Goals on minute Минута by Имя игрока
- количество голов, забитых данным игроком ровно на указанной минуте матча.
\texttt{Goals on first <\(T\)> minutes by <Имя игрока>}\\ --- количество голов, забитых данным игроком на минутах с первой по \(T\)-ю включительно.Goals on last \(T\) minutes by Имя игрока
- количество голов, забитых данным игроком на минутах с \((91 - T)\)-й по 90-ю включительно.
Score opens by Название команды
- сколько раз данная команда открывала счет в матче.
Score opens by Имя игрока
- сколько раз данный игрок открывал счет в матче.
Входной файл содержит информацию о матчах и запросы в том порядке, в котором они поступают в программу Аси Вуткиной.
Во входном файле содержится информация не более чем о 100 матчах, в каждом из которых забито не более 10 голов. Всего в чемпионате участвует не более 20 команд, в каждой команде не более 10 игроков забивают голы.
Все названия команд и имена игроков состоят только из прописных и строчных латинских букв и пробелов, а их длина не превышает 30. Прописные и строчные буквы считаются различными. Имена и названия не начинаются и не оканчиваются пробелами и не содержат двух пробелов подряд. Каждое имя и название содержит хотя бы одну букву.
Минута, на которой забит гол - целое число от 1 до 90 (про голы, забитые в дополнительное время, принято говорить, что они забиты на 90-й минуте).
Для простоты будем считать, что голов в собственные ворота в европейских чемпионатах не забивают, и на одной минуте матча может быть забито не более одного гола (в том числе на 90-й). Во время чемпионата игроки не переходят из одного клуба в другой.
Количество запросов во входном файле не превышает 500.
Для каждого запроса во входном файле выведите ответ на этот запрос в отдельной строке. Ответы на запросы, подразумевающие нецелочисленный ответ, должны быть верны с точностью до трех знаков после запятой.
"Juventus" - "Milan" 3:1 Inzaghi 45' Del Piero 67' Del Piero 90' Shevchenko 34' Total goals for "Juventus" Total goals by Pagliuca Mean goals per game by Inzaghi "Juventus" - "Lazio" 0:0 Mean goals per game by Inzaghi Mean goals per game by Shevchenko Score opens by Inzaghi
3 0 1.0 0.5 1.0 0
Total goals by Arshavin
0