eolymp
bolt
Try our new interface for solving problems
Problems

Криптекс

Криптекс

\includegraphics{https://static.e-olymp.com/content/9f/9f2b2cd179be0a090d2aef2ae475596ad5370440.jpg} Роберт Ленгдон найшёл древний криптекс, на котором вместо букв в каждой клеточке записано некоторое число. Криптекс - это цилиндр, у которого \textbf{M} строк и \textbf{N} столбиков. Строки нумеруются от \textbf{0} до \textbf{M-1} и столбики от \textbf{0} до \textbf{N-1}. В каждой клеточке криптекса записаны натуральные числа. Каждая строка криптекса крутится влево и вправо. Чтобы открыть криптекс Роберту нужно уметь быстро крутить строки, а также быстро подсчитывать сумму чисел на некотором прямоугольнике. Для каждого запроса о подсчёте суммы на прямоуголике вывести указанную сумму на экран. \InputFile В первой строке задано \textbf{2} числа: \textbf{N}, \textbf{M} -- размеры криптекса (\textbf{1} ≤ \textbf{N}, \textbf{M} ≤ \textbf{1000}). В последующих \textbf{M} строках в каждой строке по \textbf{N} чисел -- числа, записанные в начальной конфигурации криптекса (матрица \textbf{А}, \textbf{0} ≤ \textbf{A_ij} ≤ \textbf{1000}). В следующей строке \textbf{Q} -- количество запросов (\textbf{1} ≤ \textbf{Q} ≤ \textbf{1000}). Всього есть \textbf{3} типа запросов: \begin{itemize} \item \textbf{? a b c d} -- посчитать сумму на прямоугольнике: \textbf{a} ≤ \textbf{i} ≤ b, \textbf{c} ≤ \textbf{j} ≤ \textbf{d}: \textbf{a}, \textbf{b} -- номера строк, \textbf{c}, \textbf{d} -- номера столбиков (\textbf{1} ≤ \textbf{a} ≤ \textbf{b} ≤ \textbf{M}, \textbf{1} ≤ \textbf{c}, \textbf{d} ≤ \textbf{N}. Если \textbf{c} > \textbf{d} то нужно посчитать сумму на двух прямоугольниках\textbf{(a, b, c, n-1)} та \textbf{(a, b, 0, d)}); \item \textbf{ml l r val} -- прокрутить все строки от \textbf{l} до \textbf{r} включительно на \textbf{val} позиций влево; \item \textbf{mr l r val} -- прокрутить все строки от \textbf{l} до \textbf{r} включительно на \textbf{val} позиций вправо (\textbf{1} ≤ \textbf{l} ≤ \textbf{r} ≤ \textbf{M}, \textbf{1} ≤ \textbf{val}≤ \textbf{1000}). \end{itemize} \OutputFile Для всех запросов типа "\textbf{?}" вывести ответ на этот запрос.
Time limit 8 seconds
Memory limit 512 MiB
Input example #1
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
7
? 0 3 0 3
? 1 3 1 3
ml 1 2 2
? 1 3 1 3
? 0 3 1 2
mr 2 3 1
? 0 3 1 2
Output example #1
136
99
95
68
68
Author Ostap Stoliarchuk
Source Distance Summer Computer School - Summer 2013