Логічна формула має синтаксис, показаний на рисунку 1(a), де змінна позначає значення істинності. Формула (\textbf{+ F_1 \ldots F_n}) позначає логічну диз'юнкцію формул \textbf{F_i}, (\textbf{* F_1 \ldots F_n}) позначає логічну кон'юнкцію формул \textbf{F_i}, а — це заперечення . Якщо формула має специфічний синтаксис, заданий на рисунку 1(b), кажуть, що формула знаходиться в ACM-нормальній формі (ACMNF).
\includegraphics{https://static.e-olymp.com/content/12/120a1d7fd9315cf5058abcec7b190e997db84ee9.jpg}
Формула перетворюється у ACMNF за допомогою наведених нижче правил переписування, де позначає формулу, — непорожню послідовність формул, а і — можливо, порожні послідовності формул. Застосування правила переписування \textbf{q} \rightarrow \textbf{r} до формули означає заміну частини , що відповідає шаблону , на , як показано на рисунку 2. Перетворення завершується, коли жодне правило більше не може бути застосоване. Перетворення завершиться для будь-якої формули, і результат унікальний незалежно від порядку застосування правил і вибраних частин формули.
\includegraphics{https://static.e-olymp.com/content/60/6050aee4925c3544de7f551b99e942b6dc8de22f.jpg}
Набір аксіом подається як список (\textbf{V_1} \textbf{V_2} \ldots \textbf{V_n}) хибних значень. Доведенням формули щодо множини аксіом називається терм із ACMNF для , який істинний відносно . Наприклад, терми та є доведеннями формули відносно аксіом .
Завдання полягає у написанні генератора доведень, який для заданої формули , множини аксіом та чисел k_1, \ldots, k_n виводить наступні доведень формули у тому порядку, в якому вони зустрічаються у ACMNF для . Якщо доведення закінчуються, генератор продовжує з першого доведення формули . Наприклад, генерація першого доведення формули відносно аксіом дає . Три наступних доведення: , , . Якщо у ACMNF формули зустрічаються схожі (але різні за формою) терми, як у останньому прикладі на рисунку 3, такі терми вважаються різними.
Напишіть генератор доведень, який зчитує набори даних зі стандартного вводу. Вміст одного набору даних: \textbf{F}\ \textbf{A}\ \textbf{k_1}\ \ldots\ \textbf{k_n}\ 0, де n > 0, — формула, — набір аксіом, а \textbf{k_1}, \ldots, \textbf{k_n} — цілі числа (long integer), які відмінні від . Для кожного \textbf{k_i}, i=1, \ldots, n, програма генерує наступні |\textbf{k_i}| доведень формули і, якщо \textbf{k_i} > 0, виводить ці доведення у стандартний вивід.
Кожне виведене доведення починається з початку рядка, і між символами доведення немає пропусків. Згенеровані доведення не виводяться, якщо \textbf{k_i} < 0. Пробіли у вхідних даних можуть використовуватися довільно. Довжина формули — не більше символів, а терм ACMNF — не більше символів (без пропусків). Вхідні дані закінчуються кінцем файлу і є коректними.
Приклад 1