Діедральна група — це множина з операцією множення , визначеною на . Множина породжується двома елементами та . Операція множення явно не записується, тобто a*a буде позначатись як або a^2. Аналогічно, a*a*b записується як a^2b^1 або просто a^2b.
Діедральна група має два цілі параметри і , де m \geq 2 і n \geq 2, тому діедральну групу записують як D_{m,n}. Відношення, що визначають D_{m,n}, такі:
a^m = a^0 = 1, b^n = b^0 = 1 і ba = a^{m-1}b.
Отже, D_{m,n} має елементів, а саме
D_{m,n} = \{ a^j b^k | 0 \leq j < m, 0 \leq k < n \} = \{ a^0b^0, a^1b^0, a^2b^0, \ldots, a^{m-1}b^0, \ldots, a^{m-1}b^{n-1} \}.
Наприклад, нехай m = 7 і n = 2. Елементи D_{7,2}:
\{ a^0b^0, a^1b^0, a^2b^0, a^3b^0, a^4b^0, a^5b^0, a^6b^0, a^0b^1, a^1b^1, a^2b^1, a^3b^1, a^4b^1, a^5b^1, a^6b^1 \}.
Множення не є комутативним, тобто ba \neq ab. Насправді ba = a^6b згідно з визначальними відношеннями D_{7,2}. Також a^ja^k = a^{(j+k) \% m}, і b^jb^k = b^{(j+k) \% n}. Отже:
(a^jb^k)(a^pb^q) \neq (a^{(j+p) \% m}b^{(k+q) \% n}).
Щоб правильно перемножити два елементи (a^3b^1) і (a^2b^1) із D_{7,2}, виконаємо такі дії:
(a^3b^1)(a^2b^1) = (a^3b^0)(ba)(a^1b^1) = (a^3b^0)(a^6b^1)(a^1b^1),
оскільки ba = a^6b.
Оскільки a^3b^0a^6 = a^3a^6 = a^{(3+6) \% 7} = a^2, помножимо перші два множники: (a^3b^0)(a^6b^1) = (a^2b^1).
Отже,
(a^3b^0)(a^6b^1)(a^1b^1) = (a^2b^1)(a^1b^1).
Тепер перезапишемо вираз так:
(a^2b^1)(a^1b^1) = (a^2b^0)(ba)(a^0b^1) = (a^2b^0)(a^6b^1)(a^0b^1) = (a^8b^2) = (a^1b^0).
Отже, добуток двох елементів (a^3b^1) та (a^2b^1) дорівнює (a^3b^1)(a^2b^1) = (a^1b^0).
Ваше завдання — написати програму, яка, отримавши , та будь-які два елементи (a^j b^k) та (a^p b^q) діедричної групи D_{m,n}, коректно обчислює їхній добуток.
Вхідні дані складаються з кількох тестів. Кожен тест займає кілька рядків. Перший рядок кожного тесту містить problemID, , та , відокремлені пробілом. Значення і не перевищують . Число — кількість прикладів на множення у поточному тесті. Далі йде рядків, кожен з яких містить два елементи з D_{m,n}, які треба помножити. Кожен елемент задано у вигляді a3b1 замість a^3b^1. Дані для наступного тесту йдуть одразу за попереднім. Якщо problemID дорівнює ZZ, це означає кінець вхідних даних.
Для кожного прикладу на множення потрібно вивести один рядок у такому вигляді:
ProblemID id: ajbk * apbq = arbs
де id — це номер problemID з вхідних даних, ajbk та apbq — елементи, які треба помножити, а arbs — правильна відповідь.
Приклад 1