Одно из главных нововведений новейшей операционной системы 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 ≤ 1000000) - размер массива, с которым будет работать Ваш менеджер памяти.
Во второй строке содержаться четыре числа 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 выведите в выходной файл на отдельной строке результат запроса.