Операція з матрицею#3287

Операція з матрицею

2 секунди
64 мегабайти
Дуже складна

Ви студент, який шукає роботу. Сьогодні ви проходили іспит на працевлаштування до ІТ‑компанії. Вам запропонували написати ефективну програму для виконання низки операцій над квадратною матрицею.

Спочатку вам надано матрицю N \times N. Далі йде серія з операцій. Усі операції, окрім останньої, змінюють матрицю. Після всіх операцій потрібно вивести хеш‑значення, обчислене за результатуючою матрицею, як описано нижче.

Доступні операції:

Вхідні дані

Перший рядок кожного тесту містить дев'ять цілих чисел: , , , , , , , , .

  • 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

Loading
Loading