Умный мозг — это вкусный мозг
Зомби загнали вас и вашу команду в угол. Надежды нет...
Но подождите! Внезапно они останавливаются и предлагают вам сделку. Оказывается, у зомби проблема с поиском вкусных мозгов, которые, по их мнению, являются умными (нет ничего более отвратительного для зомби, чем мозги выпускника факультета коммуникаций). Хотя ваши мозги были бы действительно вкусными, зомби понимают, что их можно использовать с большей пользой, помогая им находить другие умные мозги. Сделка такова: помогите зомби определить, является ли данный мозг умным (и, следовательно, вкусным) или нет, и они отпустят вашу команду (по крайней мере, на данный момент).
Будучи командой с большими мозгами, вы быстро обнаруживаете, что мозги можно определить как умные или нет, если мозг может вернуть правильный ответ на данное булево выражение. Вы быстро составляете список булевых выражений и начинаете тестировать одно выражение на каждом мозге.
Каждое булево выражение детерминировано и рекурсивно определяется следующим образом:
выражение = '
(
' + ( значениеиливыражение) + операция + ( значениеиливыражение) + '
)
'
значение = '
t
' или '
f
'
операция = '
' или '
|
'
Все значения и выражения могут быть предшествованы необязательным символом '
!
'.
В выражении нет символов, кроме перечисленных ниже. Вот определение каждого символа:
'
' представляет И. (ab) оценивается как истина, если и a, и b истинны; ложь в противном случае.
'
|
' представляет ИЛИ. (a| b) оценивается как ложь, если и a, и b ложны; истина в противном случае.
'
!
' представляет НЕ. !(a) оценивается как ложь, если a истинно; истина в противном случае.
'
(
' и '
)
' являются границами выражений. Порядок операций требует, чтобы все выражения в скобках оценивались в первую очередь. Всегда есть соответствующая закрывающая скобка '
)
' для каждой открывающей скобки '
(
'.
'
t
' и '
f
' представляют истину и ложь соответственно.
Входные данные
Первая строка содержит целое число x, такое что 0 < x ≤ 10000. Далее следуют x строк, каждая из которых содержит полное булево выражение (до 50 символов длиной), за которым следует один пробел, символ равенства '=', еще один пробел и оценка выражения тестовым мозгом (либо 't', либо 'f').
Выходные данные
На одной строке для каждого тестового мозга напечатайте номер мозга, за которым следует двоеточие и пробел, а затем либо "Good brain", если выражение было оценено правильно, либо "Bad brain", если выражение было оценено неправильно. Как только вы закончите, я предлагаю вам начать бежать как можно быстрее, так как зомби дадут вам лишь небольшую фору за вашу помощь.