Глеб решил изучить новый для себя язык программирования. Так как C++ показался ему слишком простым, он выбрал язык Bassembly. Язык этот пока молодой, поэтому найти удалось только его документацию.
Доступные регистры на данном языке: eax, ecx, edx, esi и edi. Каждый регистр хранит беззнаковое 32-битное целое число. Все арифметические операции над регистрами выполняются по модулю \(2^{32}\): при переполнении старшие биты отбрасываются. Например, число \(2^{32}\) эквивалентно 0, а число \(-1\) эквивалентно \(2^{32}-1\).
Bassembly поддерживает пять команд: add, sub, mul, inc, print. Обозначим через reg, reg1, reg2 произвольные регистры из списка выше, а через const — неотрицательное целое число от 0 до \(2^{32}-1\).
Команда add (несколько форм):
add 0 const — выполнить операцию eax += const.
add 1 reg — выполнить операцию eax += reg.
add 2 reg1 reg2 — выполнить операцию reg1 += reg2.
Команда sub (несколько форм):
sub 0 const — выполнить операцию eax -= const.
sub 1 reg — выполнить операцию eax -= reg.
sub 2 reg1 reg2 — выполнить операцию reg1 -= reg2.
Команда mul (две формы):
mul 1 reg1 — вычислить произведение eax * reg1 и сохранить его в пару регистров [ecx:eax].
mul 2 reg1 reg2 — вычислить произведение reg1 * reg2 и сохранить его в пару регистров [ecx:eax].
Здесь запись [ecx:eax] обозначает 64-битное число, у которого старшие 32 бита записываются в ecx, а младшие 32 бита — в eax.
Команда inc: inc reg выполняет операцию reg += 1. Команда print: print reg выводит текущее значение регистра reg. Все регистры в начале выполнения программы равны 0.
Но Глеб ещё только учится писать программы на этом языке, поэтому иногда допускает опечатки. Если название команды в строке записано неверно, то строка считается ошибочной. Если же название команды записано верно, то гарантируется, что все остальные элементы этой строки корректны, кроме, возможно, названий регистров. Таким образом, при корректно записанной команде опечатки могут встречаться только в названиях регистров.
Программа обрабатывается построчно сверху вниз. Если в некоторой строке обнаруживается опечатка, то все предыдущие корректные строки считаются уже выполненными (в частности, должны быть выведены все значения, напечатанные командами print в предыдущих строках). После этого необходимо вывести номер первой ошибочной строки и завершить выполнение. Если ошибочных строк нет, требуется выполнить все команды по порядку и вывести все значения, напечатанные командами print.
Формат входных данных
В первой строке дано одно число \(n\) — количество команд (\(1 \le n \le 10^5\)). В следующих \(n\) строках содержится описание программы, по одной строке на каждую команду. Строки нумеруются от 1 до \(n\).
Формат выходных данных
Если в программе встречается ошибочная строка, необходимо вывести все значения, напечатанные командами print до первой ошибки, по одному в строке, а после этого в отдельной строке — номер первой ошибочной строки. Если ошибочных строк нет, вывести все значения, напечатанные командами print, по одному в строке.