EduBrick

Различные на отрезке, онлайн

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

Дан массив из nn чисел. Нужно отвечать на запросы «сколько различных значений на отрезке [l,r][l, r]», но границы приходят зашифрованными: по паре (lj,rj)(l_j, r_j) из входа настоящие границы получаются как

l=((lj+prev) mod n)+1,r=((rj+prev) mod n)+1,l = ((l_j + \text{prev}) \bmod n) + 1, \qquad r = ((r_j + \text{prev}) \bmod n) + 1,

где prev\text{prev} — ответ на предыдущий запрос (00 для первого). Если после расшифровки l>rl > r, границы меняются местами.

Формат ввода

В первой строке — числа nn и qq (1≤n,q≤2⋅1051 \le n, q \le 2 \cdot 10^5). Во второй — nn чисел (∣ai∣≤109|a_i| \le 10^9). В следующих qq строках — пары ljl_j, rjr_j (0≤lj,rj≤1090 \le l_j, r_j \le 10^9).

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

На каждый запрос выведите количество различных значений на расшифрованном отрезке.

Примеры

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