eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Менеджер пам`яті

Менеджер пам`яті

Одне з головних нововведень найновішої операційної системы \textit{Indows 7} - новий менеджер пам'яті. Він працює з масивом довжиною \textbf{N} і дозволяє виконувати три самі сучасні операції: \begin{itemize} \item \textbf{copy(a, b, l)} - скопіювати відрізок довжиною \textbf{\[a},\textbf{ a+l-1\]} в \textbf{\[b},\textbf{ b+l-1\]}; \item \textbf{sum(l, r)} - порахувати суму елементів масиву на відрізку \textbf{\[l, r\]}; \item \textbf{print(l, r)} - надрукувати елементи з \textbf{l} по \textbf{r}, включно. \end{itemize} Ви є розрабником своєї операційної системи, і Ви, безумовно, не можете обійтись без інноваційних технологій. Вам необхідно реалізувати точно такий же менеджер пам'яти. \InputFile Перший рядок вхідного файлу містить ціле число \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{1000000}) - розмір масиву, з яким буде працювати Ваш менеджер пам'яті. У другому рядку містяться чотири числа \textbf{1} ≤ \textbf{X_1}, \textbf{A}, \textbf{B}, \textbf{M} ≤ \textbf{10^9+10}. З їх допомогою можна сгенерувати початковий масив чисел \textbf{X_1}, \textbf{X_2}, ..., \textbf{X_N}. \textbf{X_\{i+1\}=(A*X_i+B) mod M}. Наступний рядок вхідного файлу містить ціле число \textbf{K} (\textbf{1} ≤ \textbf{K} ≤ \textbf{200000}) - кількість запитів, які необхідно виконати Вашому менеджеру пам'яті. Далі у \textbf{K} рядках містяться описи запитів. Запити задано у форматі: \begin{itemize} \item \textbf{cpy a b l} - для операції \textbf{copy}; \item \textbf{sum l r} - для операції \textbf{sum} (\textbf{l} ≤ \textbf{r}); \item \textbf{out l r} - для операції \textbf{print} (\textbf{l} ≤ \textbf{r}). \end{itemize} Гарантується, що сумарна довжина запитів \textbf{print} не перевищує \textbf{3000}. Також гарантується, що усі запити коректні. \OutputFile Для кождого запиту \textbf{sum} або \textbf{print} виведіть у вихідний файл у окремому рядку результат запиту.
Ліміт часу 10 секунд
Ліміт використання пам'яті 512 MiB
Вхідні дані #1
6
1 4 5 7
7
out 1 6
cpy 1 3 2
out 1 6
sum 1 4
cpy 1 2 4
out 1 6
sum 1 6
Вихідні дані #1
1 2 6 1 2 6
1 2 1 2 2 6
6
1 1 2 1 2 6
13