EduBrick

L. Вырезать и вклеить

3000 мс · 256 МБ · всё или ничего

Дан массив. Обрабатывайте запросы двух видов:

  • 1 l r p — вырезать отрезок [l,r][l, r] и вставить его обратно так, чтобы его первый элемент оказался на позиции pp в массиве после удаления отрезка (1≤p≤n−(r−l+1)+11 \le p \le n - (r - l + 1) + 1);
  • 2 l r — вывести сумму на отрезке [l,r][l, r].

Формат ввода

В первой строке — числа nn и mm (1≤n,m≤1051 \le n, m \le 10^5). Во второй — nn чисел aia_i (∣ai∣≤109|a_i| \le 10^9). Далее mm запросов.

Формат вывода

На каждый запрос второго вида выведите сумму в отдельной строке.

Примеры

ввод
5 4
1 2 3 4 5
2 1 5
1 1 2 4
2 1 3
2 4 5
вывод
15
12
3
ввод
1 1
7
2 1 1
вывод
7
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.