Problems
Рекурсия
Рекурсия
\textit{Рекурсия. сущ. муж. см. рекурсия.}
\textit{Фольклор}
Петя разрабатывает новую среду разработки для языка \textbf{Ж±}. Сейчас он пишет модуль, который будет отслеживать потенциальную бесконечную рекурсию.
\textbf{Ж±} - процедурный язык. Все переменный в \textbf{Ж±} являются двоичными, каждая переменная может принимать два значения: "\textbf{0}" и "\textbf{1}". Каждая процедура имеет несколько аргументов. В \textbf{Ж±} есть следующие операторы:
\begin{itemize}
\item увеличить значение на один "\textbf{x++}" - если \textbf{x} равен \textbf{0}, он становится равным \textbf{1};
\item уменьшить значение на один "\textbf{x--}" - если \textbf{x} равен \textbf{1}, он становится равным \textbf{0};
\item условный оператор "\textbf{if (x) S1 else S2}" где \textbf{S1} и \textbf{S2} - произвольные операторы, выполнить \textbf{S1}, если \textbf{x} равен 1, или \textbf{S2}, если \textbf{x} равен \textbf{0};
\item вызов процедуры "\textbf{f (x, y)}";
\item составной оператор "\textbf{\{S1 S2 ...\}}", где \textbf{S1}, \textbf{S2}, и т.д. - произвольные операторы: выполнить \textbf{S1}, \textbf{S2}, и т.д. в этом порядке.
\end{itemize}
Описание процедуры выглядит так: "\textbf{<имя процедуры> (<список аргументов>) S}" где \textbf{S} - произвольный оператор.
Все аргументы передаются по значению (то есть изменения внутри процедуры не меняют значений соответствующих переменных в вызывающей процедуре).
Например, программа в первом примере содержит процедуру "\textbf{inc}", которая получает трех-битное значение в виде трёх аргументов \textbf{x2}, \textbf{x1} и \textbf{x0} и рано или поздно вызывает процедуру "\textbf{done}" с тремя аргументами, которые задают значение, увеличенное на единицу.
По заданной программе выясните, можно ли так вызвать некоторую процедуру с такими аргументами, чтобы результатом вызова стала бесконечная рекурсия.
\InputFile
Входной файл содержит программу на языке \textbf{Ж±}. Она содержит не более \textbf{20} процедур, каждая процедура имеет не более 15 аргументов. Размер входного файла не превышает \textbf{1000} байт. Имена процедур и аргументов состоят из букв и цифр и являются зависимыми от регистра. Все имена не длиннее \textbf{40} символов. Никакая процедура не называется "\textbf{if}" или "\textbf{else}".
\OutputFile
Выведите "\textbf{YES}", если можно вызвать некоторую процедуру с такими аргументами, что в результате получится бесконечная рекурсия, или "\textbf{NO}", если нет.
Input example #1
inc(x2, x1, x0) { if (x0) { x0-- inc1(x2, x1, x0) } else { x0++ done(x2, x1, x0) } } inc1(x2, x1, x0) { if (x1) { x1-- inc2(x2, x1, x0) } else { x1++ done(x2, x1, x0) } } inc2(x2, x1, x0) { if (x2) { x2-- done(x2, x1, x0) } else { x2++ done(x2, x1, x0) } } done(x2, x1, x0) { }
Output example #1
NO