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