EduBrick

K. Циклический сдвиг отрезка

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

Дан массив. Обрабатывайте запросы двух видов: 1 l r k — циклически сдвинуть отрезок [l,r][l, r] влево на kk позиций; 2 p — вывести элемент, стоящий на позиции pp.

Сдвиг влево на kk означает, что элемент, стоявший на позиции l+kl + k, оказывается на позиции ll, а первые kk элементов отрезка уходят в его конец.

Формат ввода

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

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

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

Примеры

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