Задачі
Криптекс
Криптекс
\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{?}" вивести відповідь на даний запит.
Вхідні дані #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
Вихідні дані #1
136 99 95 68 68