Вчитель математики пан Мацудайра навчає своїх учнів розкладу та факторизації многочленів. Минулого тижня він доручив учням написати два многочлени (з однією змінною ) і знайти НСД (найбільший спільний дільник) цих многочленів як домашнє завдання, але йому стало нудно перевіряти їхні відповіді вручну. Тому вас просять написати програму для перевірки відповідей.
Розглядаються лише ті многочлени з цілими коефіцієнтами, які називаються цілими многочленами.
Коли дано два цілі многочлени і , цілий многочлен є спільним дільником і , якщо існують деякі цілі многочлени і такі, що A = CX і B = CY.
НСД двох цілих многочленів є спільним дільником, який має найвищий степінь (по ); вам потрібно написати програму, яка обчислює НСД двох многочленів.
Відомо, що НСД двох даних многочленів є унікальним, якщо ігнорувати множник-константу. Тобто, коли і є обидва НСД деяких двох многочленів і , p \times C = q \times D для деяких ненульових цілих чисел і .
Вхід складається з кількох наборів даних. Кожен набір даних складається з пари рядків введення, кожен з яких представляє многочлен як вираз, визначений нижче.
Первинний елемент — це змінна x, послідовність цифр – або вираз, укладений у дужки (...). Приклади: x, 99, (x+1).
Фактор — це первинний елемент сам по собі або первинний елемент, за яким слідує показник степеня. Показник степеня складається з символу ^, за яким слідує послідовність цифр –. Приклади: x^05, 1^15, (x+1)^3.
Член складається з одного або кількох прилеглих факторів. Приклади: 4x, (x+1)(x-2), 3(x+1)^2.
Вираз — це один або кілька членів, з'єднаних або +, або -. Крім того, перший член виразу може опціонально починатися зі знака мінус -. Приклади: -x+1, 3(x+1)^2-x(x-1)^2.
Цілі константи, показники степеня, множення (прилеглі), додавання (+) та віднімання/негування (-) мають свої звичайні значення. Послідовність цифр завжди інтерпретується як ціла константа. Наприклад, 99 означає , а не 9 \times 9.
Будь-які підвирази введення, коли повністю розгорнуті та нормалізовані, мають коефіцієнти менші за і степені менші за . Послідовності цифр у показниках степеня представляють ненульові значення.
Усі набори даних розроблені так, щоб стандартний алгоритм з -бітними цілими числами з двійковим доповненням міг вирішити проблему без переповнень.
Кінець введення позначається рядком, що містить крапку.
Для кожного набору даних виведіть вираз многочлена НСД в одному рядку у форматі нижче.
c_0 x^{p_0} \pm c_1 x^{p_1} \ldots \pm c_n x^{p_n}
Де c_i і p_i (i = 0, \ldots, n) є додатними цілими числами з p_0 > p_1 > \ldots > p_n, і найбільший спільний дільник \{c_i | i = 0, \ldots, n\} дорівнює .
Додатково:
Коли c_i дорівнює , його слід опустити, якщо відповідний p_i не дорівнює ,
x^0 слід опустити повністю, і
x^1 слід записати як x.
Приклад 1