Менеджер памяти
Одно из главных нововведений новейшей операционной системы 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 ≤ 10^6
) - размер массива, с которым будет работать Ваш менеджер памяти.
Во второй строке содержаться четыре числа 1 ≤ x[1]
, a, b, m ≤ 10^9
+ 10. С помощью них можно сгенерировать исходный массив чисел x[1]
, x[2]
, ..., x[n]
. x[i+1]
= (a * x[i]
+ 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 выведите в отдельной строке результат запроса.