Преобразование таблицы

아직 제출이 없습니다시간 제한4초메모리 제한512 MB

문제

Ваня занимается работой с большими данными. Его проект занимается обработкой гигантских таблиц статистических данных. Ваня отвечает за разработку модуля преобразования таблиц, который выполняет перестановку строк, столбцов и ячеек таблицы.

Модуль занимается обработкой таблицы, состоящей из hh строк и ww столбцов, строки пронумерованы сверху вниз от 0 до h1h - 1, столбцы пронумерованы слева направо от 0 до w1w - 1. Ячейка в ii-й строке, jj-м столбце таблицы обозначается как \[i,j]\[i, j]. Исходно ячейка \[i,j]\[i, j] содержит число i×w+ji \times w + j. На рис. 1. приведен пример исходного заполнения таблицы для h=3h = 3, w=5w = 5.

01234
56789
1011121314

Рис. 1. Пример исходного заполнения таблицы.

Модуль преобразования таблиц может выполнять следующие три типа операций.

ОперацияОбозначениеДействие
Обмен столбцовc xx yyПоменять местами содержимое столбцов с номерами xx и yy
Обмен строкr xx yyПоменять местами содержимое строк с номерами xx и yy
Обмен ячеекf aa bb cc ddПоменять содержимое ячеек \[a,b]\[a, b] и \[c,d]\[c, d]

На рис. 2. показано, как выглядит приведенная выше таблица после выполнения последовательности операций <<c 0 1>>, <<r 0 1>>, <<f 0 0 1 2>>.

01234
56789
1011121314

выполняется операция <<c 0 1>>

10234
65789
1110121314

выполняется операция <<r 0 1>>

65789
10234
1110121314

выполняется операция <<f 0 1 1 2>>

62789
10534
1110121314

Рис. 2. Пример преобразования таблицы

После выполнения всех операций Ваня вычисляет контрольную сумму для таблицы: сумма по всем ячейкам \[i,j]\[i, j] значений (v\[i]\[j]×17i×19j)mod(109+7)(v\[i]\[j] \times 17^i \times 19^j) \bmod (10^9 + 7). Здесь v\[i]\[j]v\[i]\[j] означает значение в ячейке \[i,j]\[i, j], а операция <<mod\bmod>> означает операцию взятия остатка. Например, контрольная сумма для таблицы из примера вычисляется следующим образом: (6×170×190+2×170×191++14×172×194)mod(109+7)=564,830,737(6 \times 17^0 \times 19^0 + 2 \times 17^0 \times 19^1 + \ldots + 14 \times 17^2 \times 19^4) \bmod (10^9 + 7) = 564\\,830\\,737.

Помогите Ване выполнить все операции и вычислить контрольную сумму таблицы, которая получится в итоге.

Поскольку входные данные для этой задачи слишком велики, чтобы задавать их непосредственно, для ввода вам потребуется процедура расширения массива. Эта процедура не имеет специфических особенностей, которые надо использовать в решении задачи, предполагаемое жюри решение этой задачи в явном виде генерирует все массивы и далее работает с ними так же, как если бы оно считало их из входных данных.

Опишем процедуру генерации массива длины nn по массиву длины 2kn2 \le k \le n. Пусть задан массив целых неотрицательных чисел A=(a\[1],a\[2],,a\[k])A = (a\[1], a\[2], \ldots, a\[k]). Массив целых чисел Ax=(ax\[1],ax\[2],,ax\[n])Ax = (ax\[1], ax\[2], \ldots, ax\[n]) будем называть расширением массива AA по модулю rr до размера nn, если его элементы вычисляются по следующим формулам.

  • Если 1ik1 \le i \le k, то ax\[i]=a\[i]ax\[i] = a\[i].
  • Если k+1ink + 1 \le i \le n, то ax\[i]=(10007×ax\[i2]+10009×ax\[i1]+87277)modrax\[i] = (10007 \times ax\[i - 2] + 10009 \times ax\[i - 1] + 87277) \bmod r.

Здесь как <<mod>> также обозначена операция взятия остатка по модулю rr.

Например, выполним расширение массива A=(1,4,3)A=(1, 4, 3) до 5 элементов по модулю 13.

  • ax\[1]=a\[1]=1ax\[1] = a\[1] = 1.
  • ax\[2]=a\[2]=4ax\[2] = a\[2] = 4.
  • ax\[3]=a\[3]=3ax\[3] = a\[3] = 3.
  • ax\[4]=(10007×ax\[2]+10009×ax\[3]+87277)mod13=157332mod13=6ax\[4] = (10007 \times ax\[2] + 10009 \times ax\[3] + 87277) \bmod 13 = 157332 \bmod 13 = 6.
  • ax\[5]=(10007×ax\[3]+10009×ax\[4]+87277)mod13=177352mod13=6ax\[5] = (10007 \times ax\[3] + 10009 \times ax\[4] + 87277) \bmod 13 = 177352 \bmod 13 = 6.

Таким образом, Ax=(1,4,3,6,6)Ax = (1, 4, 3, 6, 6).

입력

Первая строка ввода содержит числа hh, ww, nn --- размеры таблицы и число преобразований, которые необходимо выполнить (1h,w5,0001 \le h, w \le 5\\,000, 2n1062 \le n \le 10^6).

Вторая строка содержит строку ss длины nn --- последовательность типов преобразований, s\[i]s\[i] = <<c>> задает операцию обмена столбцов, s\[i]s\[i] = <<r>> --- операцию обмена строк, s\[i]s\[i] = <<f>> --- операцию обмена ячеек.

Следующие четыре строки задают массивы AA, BB, CC, DD, соответственно. Каждый массив задается числом kk, 2kn2 \le k \le n, k1000k \le 1000, после чего следует kk чисел --- элементы массива. Элементы массивов AA и CC удовлетворяют ограничению 0a\[i],c\[i]h10 \le a\[i], c\[i] \le h - 1, элементы массивов BB и DD удовлетворяют ограничению 0b\[i],d\[i]w10 \le b\[i], d\[i] \le w - 1.

Пусть AxAx является расширением массива AA по модулю hh до размера nn, массив BxBx является расширением массива BB по модулю ww до размера nn, массив CxCx является расширением массива CC по модулю hh до размера nn и массив DxDx является расширением массива DD по модулю ww до размера nn.

Операции, которые требуется выполнить с таблицей, определяются следующим образом: тип ii-й операции задается символом s\[i]s\[i], а параметры получаются из массивов AxAx, BxBx, CxCx, DxDx.

  • Если s\[i]s\[i] = <<c>>, то ii-я операция <<c Bx\[i]Bx\[i] Dx\[i]Dx\[i]>>;
  • Если s\[i]s\[i] = <<r>>, то ii-я операция <<r Ax\[i]Ax\[i] Cx\[i]Cx\[i]>>;
  • Если s\[i]s\[i] = <<f>>, то ii-я операция <<f Ax\[i]Ax\[i] Bx\[i]Bx\[i] Cx\[i]Cx\[i] Dx\[i]Dx\[i]>>;

출력

Выведите одно число --- контрольную сумму таблицы после выполнения всех преобразований.