Рассмотрим программу, написанную на каком-то странном языке программирования. Переменные в этом языке имеют идентификаторы длиной от $$$1$$$ до $$$4$$$ символов, и каждый символ — это либо латинская буква (строчная или прописная), либо цифра. Дополнительное условие: первый символ в идентификаторе не может быть цифрой.
В программе используются четыре типа операций, обозначаемых символами: $, ^, # и &.
Каждая строка программы записана в одном из следующих форматов:
Программа исполняется последовательно, строка за строкой, и результат исполнения записан в переменной res. Если res в ходе программы никогда не переприсваивается, результат — это значение res до исполнения программы.
Две программы называются эквивалентными, если вне зависимости от смысла операций $, ^, # и & (но, очевидно, одна и та же операция с одним и тем же набором аргументов должна давать один и тот же результат) и значений переменных до запуска программы значение res после исполнения первой программы равно значению res после исполнения второй программы (программы исполняются независимо).
Вам дана программа из $$$n$$$ строк. Ваша задача — написать программу с минимально возможным количеством строк, которая эквивалентна данной.
В первой строке записано одно целое число $$$n$$$ ($$$1 \le n \le 1000$$$) — количество строк в программе.
Затем следуют $$$n$$$ строк — сама программа. Каждая строка задается в формате, описанном в условии, и не содержит пробелов.
В первой строке выведите $$$k$$$ — минимальное количество строк в эквивалентной программе.
Затем выведите $$$k$$$ строк без пробелов — эквивалентную программу ровно из $$$k$$$ строк в том же формате, который описан в условии.
4 c=aa#bb d12=c res=c^d12 tmp=aa$c
2 aaaa=aa#bb res=aaaa^aaaa
2 max=aaaa$bbbb min=bbbb^aaaa
0
Название |
---|