EduBrick

L. Различные на отрезке

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

Дан массив. На каждый запрос (l,r)(l, r) нужно сказать, сколько различных значений встречается среди al,…,ara_l, \ldots, a_r.

Обновлений нет, все запросы известны заранее - значит, можно отвечать на них не в том порядке, в котором они заданы. Это и есть алгоритм Мо.

Формат ввода

В первой строке - число nn (1≤n≤1051 \le n \le 10^5).

Во второй строке - nn чисел aia_i (1≤ai≤1061 \le a_i \le 10^6).

В третьей строке - число запросов qq (1≤q≤1051 \le q \le 10^5).

В следующих qq строках - пары ll и rr (1≤l≤r≤n1 \le l \le r \le n).

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

Для каждого запроса выведите количество различных значений на отрезке.

Примеры

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