Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Budowa Okopów
(budowa-okopow)
Limit pamięci: 256 MB
Limit czasu: 4.00 s

Transport wojsk podczas wojny nuklearnej to trudne zadanie. Częste naloty i skażenie uniemożliwia przejście z jednego okopu do drugiego. Potrzebny jest plan działania i ulepszenie systemu obronnego.

Każdy z okopów jest reprezentowany przez unikalną liczbę opisującą jego znaczenie strategiczne. Z okopu o wartości a da się przejść do okopu o wartości b, jeżeli liczby a oraz b nie są względnie pierwsze, tj. istnieje dzielnik d > 1, który dzieli zarówno a, jak i b.

Ta nietypowa struktura wprowadziła dowództwo w zakłopotanie. Czasami nie da się przejść pomiędzy okopami bez narażenia odziału na stratę. Podstanowiono podjąc jedyną sensowną decyzję: trzeba budować nowe okopy obok już istniejących. To znaczy, dla wybranego okopu o wartości ai jest budowany nowy o wartości (ai+1) ⋅ ai, oczywiście jeżeli taki jeszcze nie istnieje.

Pomóż im i odpowiedz na Q niezależnych zapytań o minimalną liczbę nowych okopów, które należy wybudować, aby możliwe było bezpiecznie poruszać się pomiędzy okopami o wartościach asj oraz atj.

Wejście

W pierwszym wierszu wejścia znajdują się dwie liczby N oraz Q oznaczające liczbę okopów oraz liczbę zapytań.

Następnie podane są N różnych liczb całkowitych a1, a2, …, aN, będące wartościami już istniejących okopów.

Kolejne Q wierszy zawiera pary liczb całkowitych tj i sj, reprezentujące indeksy okopów w zapytaniach.

Wyjście

Wypisz dokładnie Q wierszy, gdzie j-ty z nich powinien zawierać jedną liczbę — minimalną liczbę nowych okopów, które trzeba zbudować, aby oddział mógł bezpiecznie poruszać się pomiędzy okopami asj oraz atj.

Ograniczenia

2 ≤ N ≤ 150 000, 1 ≤ Q ≤ 300 000, 2 ≤ ai ≤ 106, ai ≠ aj jeżeli i ≠ j, 1 ≤ sj, tj ≤ N, sj ≠ tj.

Podzadania

Podzadanie Warunki Punkty
1 N, Q, ai ≤ 1 000 4
2 potrzeba wybudować maksymalnie jeden okop 13
3 ai ≤ 1 000 13
4 brak dodatkowych ograniczeń 70

Przykład

Wejście Wyjście
3 3
2 10 3
1 2
1 3
2 3
0
1
1
Wejście Wyjście
5 12
3 8 7 6 25
1 2
1 3
1 4
1 5
2 1
2 3
2 4
2 5
3 1
3 2
3 4
3 5
0
1
0
1
0
1
0
1
1
1
1
2