Problem description


Kodek
(kodek)
Limit pamięci: 256 MB
Limit czasu: 9.00 s

Urząd miejski Wrocławia zatrudnił Cię w ramach projektu, którego celem jest rozwinięcie sztucznej inteligencji nowej generacji i zastosowanie jej do usprawnienia ruchu drogowego na terenie miasta. Twój przełożony napotkał jednak pewien problem – dane potrzebne do szkolenia tak potężnej inteligencji zajmują zbyt wiele miejsca. Zwrócił się do Ciebie, legendarnego hakjera, abyś, korzystając z najnowszych technik kodowania, zmniejszył rozmiar danych treningowych.

Kodowanie to funkcja f przyporządkowująca ciąg 0-1 dla każdego elementu występującego w danych wejściowych. Aby każdą wiadomość można było jednoznacznie odkodować, warunkiem koniecznym jest, żeby dla każej pary elementów li i lj, ciąg f(li) nie był prefiksem f(lj). Koszt kodowania f dla danych d1, d2, ..., dN jest określany przez długość ciągu f(d1)f(d2)...f(dN). Powierzone Tobie zadanie wymaga, aby koszt f był jak najmniejszy.

Nadal nie jest pewne, które części danych należy zakodować, dlatego Twój przełożony przygotował dla Ciebie Q potencjalnych przedziałów. Twoje zadanie sprowadza się do przetworzenia ciągu d1, d2, ..., dN o długości N, który reprezentuje dane do trenowania, oraz udzielenia odpowiedzi na Q zapytań w postaci li ri dotyczących potencjalnego kosztu kodowania na danym przedziale. Każde zapytanie rozpatrywane jest niezależnie od pozostałych.

Wejście

Pierwszy wiersz zawiera liczbę N. Drugi wiersz zawiera ciąg danych di o długości N. Kolejne Q wierszy zawiera opis zapytań. Każdy z tych wierszy zawiera dwie liczby li i ri — pozycje lewego i prawego krańca przedziału. Pozycje są indeksowane od 1. Przedziały mogą się nakładać. To samo zapytanie może pojawić się wiele razy.

Wyjście

Wypisz dokładnie Q wierszy. Każdy z nich powinnien zawierać jedną liczbę — minimalną długość zakodowanego przedziału dli, ..., dri

Ograniczenia

1 ≤ N ≤ 400 000, 1 ≤ Q ≤ 400 000, 1 ≤ di ≤ 400 000 1 ≤ li ≤ ri ≤ N

Podzadania

Podzadanie Warunki Punkty
1 N, Q ≤ 1 000 22
2 N, Q ≤ 100 000 30
3 brak dodatkowych ograniczeń 48

Przykład

Wejście Wyjście Wyjaśnienie
7
1 2 1 3 1 2 1
5
1 7
1 3
3 5
2 4
4 4
10
3
3
5
0

Dla pierwszego zapytania jednym z optymalnych f jest: $f(1)="0"$, $f(2)="10"$, $f(3)="11"$. Zwróć uwagę, że w piątym zapytaniu wartością funkcji f jest ciąg pusty.