표 변환
시간 제한4초메모리 제한512 MB
최대 백만 개의 행, 열, 셀 교환을 큰 격자에 적용한 뒤 가중 모듈러 체크섬을 출력합니다. 연산 목록은 선형 점화식으로 생성됩니다.
문제
Ваня занимается работой с большими данными. Его проект занимается обработкой гигантских таблиц статистических данных. Ваня отвечает за разработку модуля преобразования таблиц, который выполняет перестановку строк, столбцов и ячеек таблицы.
Модуль занимается обработкой таблицы, состоящей из строк и столбцов, строки пронумерованы сверху вниз от 0 до , столбцы пронумерованы слева направо от 0 до . Ячейка в -й строке, -м столбце таблицы обозначается как . Исходно ячейка содержит число . На рис. 1. приведен пример исходного заполнения таблицы для , .
Рис. 1. Пример исходного заполнения таблицы.
Модуль преобразования таблиц может выполнять следующие три типа операций.
На рис. 2. показано, как выглядит приведенная выше таблица после выполнения последовательности операций <<c 0 1>>, <<r 0 1>>, <<f 0 0 1 2>>.
выполняется операция <<c 0 1>>
выполняется операция <<r 0 1>>
выполняется операция <<f 0 1 1 2>>
Рис. 2. Пример преобразования таблицы
После выполнения всех операций Ваня вычисляет контрольную сумму для таблицы: сумма по всем ячейкам значений . Здесь означает значение в ячейке , а операция <<>> означает операцию взятия остатка. Например, контрольная сумма для таблицы из примера вычисляется следующим образом: .
Помогите Ване выполнить все операции и вычислить контрольную сумму таблицы, которая получится в итоге.
Поскольку входные данные для этой задачи слишком велики, чтобы задавать их непосредственно, для ввода вам потребуется процедура расширения массива. Эта процедура не имеет специфических особенностей, которые надо использовать в решении задачи, предполагаемое жюри решение этой задачи в явном виде генерирует все массивы и далее работает с ними так же, как если бы оно считало их из входных данных.
Опишем процедуру генерации массива длины по массиву длины . Пусть задан массив целых неотрицательных чисел . Массив целых чисел будем называть расширением массива по модулю до размера , если его элементы вычисляются по следующим формулам.
- Если , то .
- Если , то .
Здесь как <> также обозначена операция взятия остатка по модулю .
Например, выполним расширение массива до 5 элементов по модулю 13.
- .
- .
- .
- .
- .
Таким образом, .
입력
Первая строка ввода содержит числа , , --- размеры таблицы и число преобразований, которые необходимо выполнить (, ).
Вторая строка содержит строку длины --- последовательность типов преобразований, = <<c>> задает операцию обмена столбцов, = <<r>> --- операцию обмена строк, = <<f>> --- операцию обмена ячеек.
Следующие четыре строки задают массивы , , , , соответственно. Каждый массив задается числом , , , после чего следует чисел --- элементы массива. Элементы массивов и удовлетворяют ограничению , элементы массивов и удовлетворяют ограничению .
Пусть является расширением массива по модулю до размера , массив является расширением массива по модулю до размера , массив является расширением массива по модулю до размера и массив является расширением массива по модулю до размера .
Операции, которые требуется выполнить с таблицей, определяются следующим образом: тип -й операции задается символом , а параметры получаются из массивов , , , .
- Если = <<
c>>, то -я операция <<c>>; - Если = <<
r>>, то -я операция <<r>>; - Если = <<
f>>, то -я операция <<f>>;
출력
Выведите одно число --- контрольную сумму таблицы после выполнения всех преобразований.