E. PPShneyneF4
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Алиса и Боб придумали свой язык программирования PPShneyneF4.

Данный язык очень прост, программа на PPShneyneF4 может содержать команды всего двух видов:

  • print $$$c$$$ — вывести символ $$$c$$$, где $$$c$$$ — строчная латинская буква;
  • call $$$k$$$ — вызвать команду с номером $$$k$$$.

Программа на PPShneyneF4 выглядит как упорядоченный список из $$$n$$$ команд. Команды пронумерованы числами от $$$1$$$ до $$$n$$$ и расположены в списке по возрастанию номера. При выполнении программы команды исполняются поочерёдно друг за другом по возрастанию своего номера. Команда с номером $$$i$$$ $$$(i \gt 1)$$$ не начнёт исполняться, пока не будет завершён процесс, который был вызван командой с номером $$$(i - 1)$$$.

Для примера рассмотрим работу следующей программы:

print a
call 4
call 2
print b
  1. Исполняется первая команда «print a» — выводится символ «a». Текущий вывод: «a».
  2. Исполняется вторая команда «call 4» — вызывается четвёртая команда «print b». Исполняется команда «print b» — выводится символ «b». Текущий вывод: «ab».
  3. Исполняется третья команда «call 2» — вызывается вторая команда «call 4». Исполняется команда «call 4» — вызывается четвёртая команда «print b». Исполняется команда «print b» — выводится символ «b». Текущий вывод: «abb».
  4. Исполняется последняя четвёртая команда — выводится символ «b». Текущий вывод: «abbb».
  5. Окончательный вывод программы — «abbb».

Придумать язык программирования — это полдела, нужно ещё написать программу-интерпретатор, которая считывает программу на языке PPShneyneF4, исполняет её команды и выводит результат работы.

Алиса и Боб нуждаются в Вашей помощи — реализуйте программу-интерпретатор.

Входные данные

Первая строка содержит целое число $$$n$$$ $$$(1 \le n \le 10^3)$$$ — количество команд в программе на языке PPShneyneF4.

Следующие $$$n$$$ строк содержат список из $$$n$$$ команд программы. Каждая команда приведена в отдельной строке.

Гарантируется, что существует хотя бы одна команда «print».

Выходные данные
  • Если в процессе работы программы исполнится команда «call $$$k$$$», где $$$k \lt 1$$$ или $$$k \gt n$$$, то выполнение программы завершится с ошибкой и следует вывести «ERROR»;
  • иначе, если процесс работы программы — бесконечный, то следует вывести «INFINITY»;
  • в ином случае выведите в первой строке «OK», а во второй строке — результат работы программы.
Система оценки
ПодгруппаДополнительные ограниченияБаллыНеобходимые подгруппы
$$$1$$$$$$n = 1$$$$$$5$$$—
$$$2$$$$$$n = 2$$$$$$10$$$$$$1$$$
$$$3$$$ Гарантируется, что программа состоит только из команд «print»$$$5$$$—
$$$4$$$ Гарантируется для каждой команды «call $$$k$$$», что команда с номером $$$k$$$ — это «print»$$$15$$$$$$3$$$
$$$5$$$ Гарантируется, что процесс выполнения программы НЕ бесконечный$$$30$$$$$$3$$$, $$$4$$$
$$$6$$$—$$$35$$$$$$1$$$, $$$2$$$, $$$3$$$, $$$4$$$, $$$5$$$
Примеры
Входные данные
4
print a
call 4
call 2
print b
Выходные данные
OK
abbb
Входные данные
2
print z
call 10
Выходные данные
ERROR
Входные данные
6
print h
print e
print l
print l
print o
call 6
Выходные данные
INFINITY
Примечание

Первый пример разобран в условии.

Во втором примере программа завершается с ошибкой, так как команда «call 10» вызывает команду с некорректным номером.

В третьем примере команда «call 6» бесконечно вызывает саму себя.