Задана функция $$$f$$$, написанная на довольно примитивном языке. Функция принимает целое значение, которое сразу записывается в переменную $$$x$$$. $$$x$$$ — это целочисленная переменная, которая может принимать значения от $$$0$$$ до $$$2^{32}-1$$$. Функция содержит три типа команд:
После выполнения команд возвращается значение $$$x$$$.
Каждый «for $$$n$$$» имеет парный «end», поэтому гарантируется, что функция корректна. За «for $$$n$$$» может сразу следовать «end». «add» может быть расположен вне циклов for.
Заметили, что команда «add» может переполнить значение $$$x$$$! Это значит, что значение $$$x$$$ становится больше $$$2^{32}-1$$$ после некоторой команды «add».
Теперь запускается $$$f(0)$$$, а ваша задача — узнать, корректно ли полученное значение $$$x$$$ или переполнение сделает его некорректным.
Если произошло переполнение, то выведите «OVERFLOW!!!», иначе выведите полученное значение $$$x$$$.
В первой строке записано одно целое число $$$l$$$ ($$$1 \le l \le 10^5$$$) — количество строк в функции.
В каждой из следующих $$$l$$$ строк записана одна команда одного из трех типов:
Если во время выполнения $$$f(0)$$$ произошло переполнение, то выведите «OVERFLOW!!!», иначе выведите полученное значение $$$x$$$.
9 add for 43 end for 10 for 15 add end add end
161
2 for 62 end
0
11 for 100 for 100 for 100 for 100 for 100 add end end end end end
OVERFLOW!!!
В первом примере первая команда «add» выполнится 1 раз, вторая — 150 раз и последняя — 10 раз. Обратите внимание, что за «for $$$n$$$» может сразу следовать «end» и что «add» может быть расположен вне циклов for.
Во втором примере нет команд «add», поэтому полученное значение равно 0.
В третьем примере команда «add» выполняется слишком много раз, что делает значение $$$x$$$ больше $$$2^{32}-1$$$.
Название |
---|