Рассмотрим программу, написанную на каком-то странном языке программирования. Переменные в этом языке имеют идентификаторы длиной от \(1\) до \(4\) символов, и каждый символ — это либо латинская буква (строчная или прописная), либо цифра. Дополнительное условие: первый символ в идентификаторе не может быть цифрой.
В программе используются четыре типа операций, обозначаемых символами: $, ^, # и &.
Каждая строка программы записана в одном из следующих форматов:
- <lvalue>=<rvalue>, где <lvalue> и <rvalue> — корректные идентификаторы переменных;
- <lvalue>=<arg1><op><arg2>, где <lvalue>, <arg1> и <arg2> — корректные идентификаторы переменных, а <op> — символ операции.
Программа исполняется последовательно, строка за строкой, и результат исполнения записан в переменной res. Если res в ходе программы никогда не переприсваивается, результат — это значение res до исполнения программы.
Две программы называются эквивалентными, если вне зависимости от смысла операций $, ^, # и & (но, очевидно, одна и та же операция с одним и тем же набором аргументов должна давать один и тот же результат) и значений переменных до запуска программы значение res после исполнения первой программы равно значению res после исполнения второй программы (программы исполняются независимо).
Вам дана программа из \(n\) строк. Ваша задача — написать программу с минимально возможным количеством строк, которая эквивалентна данной.
Выходные данные
В первой строке выведите \(k\) — минимальное количество строк в эквивалентной программе.
Затем выведите \(k\) строк без пробелов — эквивалентную программу ровно из \(k\) строк в том же формате, который описан в условии.