Ви студент, який шукає роботу. Сьогодні ви проходили іспит на працевлаштування до ІТ‑компанії. Вам запропонували написати ефективну програму для виконання низки операцій над квадратною матрицею.
Спочатку вам надано матрицю N \times N. Далі йде серія з операцій. Усі операції, окрім останньої, змінюють матрицю. Після всіх операцій потрібно вивести хеш‑значення, обчислене за результатуючою матрицею, як описано нижче.
Доступні операції:
WR r c v (Запис): Записати ціле число у комірку , тобто встановити A_{r, c}=v. (1 \le v \le 1\,000\,000)
CP r_1 c_1 r_2 c_2 (Копіювати): Скопіювати значення з комірки (r_1, c_1) у комірку (r_2, c_2)
SR r_1 r_2 (Обмін рядків): Поміняти місцями рядки r_1 і r_2
SC c_1 c_2 (Обмін стовпців): Поміняти місцями стовпці c_1 і c_2
RL (Поворот вліво): Повернути всю матрицю на 90^\circ проти годинникової стрілки
RR (Поворот вправо): Повернути всю матрицю на 90^\circ за годинниковою стрілкою
RH (Горизонтальне відображення): Змінити порядок рядків на зворотний
RV (Вертикальне відображення): Змінити порядок стовпців на зворотний
Перший рядок кожного тесту містить дев'ять цілих чисел: , , , , , , , , .
1 \le N, Q \le 40\,000
1 \le A, B, C \le 1\,000\,000
1 \le r, c \le N
A_{r,c} = (r \times A + c \times B) \bmod C — початкове значення матриці в позиції
1 \le D \le E \le N, 1 \le F \le G \le N, E-D \le 1\,000, G-F \le 1\,000
Далі йдуть рядків, кожний з яких описує одну операцію в зазначеному форматі.
Виведіть ціле хеш‑значення , обчислене за остаточною матрицею за таким алгоритмом:
h <- 314159265
for r = D...E
for c = F...G
h <- (31 * h + B_{r,c}) mod 100000007де <- означає присвоєння, for i = S ... T — цикл для від до включно, а mod — операція взяття залишку.
Приклад 1