Рекурсія
Рекурсія. ім. чол. див. рекурсія.
Фольклор
Петро розробляє нове середовище розробки для мови Ж±. Зараз він пише модуль, який буде відслідковувати потенційну нескінченну рекурсію.
Ж± - процедурна мова. Усі змінні у Ж± є двійковими, кожна змінна може приймати два значення: "0" і "1". Кожна процедура має декілька аргументів. У Ж± є наступні оператори:
збільшити значення на один "x++" - якщо x дорівнює 0, він стає рівним 1;
зменшити значення на один "x–" - якщо x дорівнює 1, він стає рівним 0;
умовний оператор "if (x) S1 else S2" де S1 і S2 - довільні оператори, виконати S1, якщо x дорівнює 1, або S2, якщо x дорівнює 0;
виклик процедури "f (x, y)";
складений оператор "{S1 S2 ...}", де S1, S2, і т.д. - довільні оператори: виконати S1, S2, і т.д. у цьому порядку.
Опис процедури виглядає так: "<ім'я процедури> (<список аргументів>) S" де S - довільний оператор.
Усі аргументи передаються за значенням (тобто зміни всередині процедури не змінюють значень відповідних змінних у процедури, що її викликала).
Наприклад, програма у першому прикладі містить процедуру "inc", яка отримує трьох-бітне значення у вигляді трьох аргументів x2, x1 та x0 і рано чи піздно викликає процедуру "done" з трьома аргументами, які задають значення, збільшене на одиницю.
За заданою програмою виясніть, чи можна так викликати деяку процедуру з такими аргументами, щоб результатом виклику стала нескінченна рекурсія.
Вхідні дані
Вхідний файл містить програму на мові Ж±. Вона містить не більше 20 процедур, кожна процедура має не більше 15 аргументів. Розмір вхідного файлу не перевищує 1000 байт. Імена процедур та аргументів складаються з літер та цифр і є залежними від регістра. Усі імена не довші 40 символів. Ніяка процедура не називається "if" або "else".
Вихідні дані
Виведіть "YES", якщо можна викликати деяку процедуру з такими аргументами, що у результаті отримається нескінченна рекурсія, або "NO", якщо ні.