Менеджер памяти
Менеджер памяти
Одно из главных нововведений новейшей операционной системы Indows 7 - новый менеджер памяти. Он работает с массивом длины n и позволяет выполнять три самые современные операции:
- copy(a, b, l) - скопировать отрезок длины [a, a + l - 1] в [b, b + l - 1];
- sum(l, r) - посчитать сумму элементов массива на отрезке [l, r];
- print(l, r) - напечатать элементы с l по r, включительно.
Вы являетесь разработчиком своей операционной системы, и Вы, безусловно, не можете обойтись без инновационных технологий. Вам необходимо реализовать точно такой же менеджер памяти.
Входные данные
Первая строка содержит целое число n (1 ≤ n ≤ 106
) - размер массива, с которым будет работать Ваш менеджер памяти.
Во второй строке содержаться четыре числа 1 ≤ x1
, a, b, m ≤ 109
+ 10. С помощью них можно сгенерировать исходный массив чисел x1
, x2
, ..., xn
. xi+1
= (a * xi
+ b) mod m.
Следующая строка содержит целое число k (1 ≤ k ≤ 200000) - количество запросов, которые необходимо выполнить Вашему менеджеру памяти.
Далее в k строках содержится описание запросов. Запросы заданы в формате:
- cpy a b l - для операции copy;
- sum l r - для операции sum (l ≤ r);
- out l r - для операции print (l ≤ r).
Гарантируется, что суммарная длина запросов print не превышает 3000. Также гарантируется, что все запросы корректны.
Выходные данные
Для каждого запроса sum или print выведите в отдельной строке результат запроса.
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 2 6 1 2 6 1 2 1 2 2 6 6 1 1 2 1 2 6 13