D. Задача на запросы
ограничение по времени на тест
8 секунд
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Александр просит вас решить следующую задачу:

У него есть массив $$$a$$$ из $$$n$$$ целых положительных чисел. Теперь он хочет, чтобы вы ответили на $$$q$$$ запросов. В $$$i$$$-м запросе подаются два целых положительных числа $$$l_i$$$ и $$$r_i$$$ ($$$1 \le l_i \le r_i \le n$$$). Александр просит вас назвать количество делителей числа $$$a_{l_i} \cdot a_{l_i + 1} \cdot \ldots \cdot a_{r_i}$$$, то есть количество делителей у произведения чисел на отрезке $$$[l_i, r_i]$$$.

Так как ответы могут быть очень большими, выводите их по модулю $$$10^9 + 7$$$.

Входные данные

В первой строке расположены два целых числа $$$n$$$ и $$$q$$$ ($$$1 \le n \le 10^5, 1 \le q \le 10^5$$$) — количество чисел и запросов соответственно.

Во второй строке находятся $$$n$$$ целых чисел $$$a_i$$$ ($$$1 \le a_i \le 10^7$$$) — элементы массива $$$a$$$.

Далее в $$$q$$$ строках заданы по два целых числа $$$l_i$$$ и $$$r_i$$$ ($$$1 \le l_i \le r_i \le n$$$) — параметры $$$i$$$-го запроса.

Выходные данные

Выводите ответы на запросы, по одному ответу на запрос в каждой строке.

Система оценки

В этой задаче оценка по подзадачам. Баллы за подзадачу засчитываются, только если все тесты данной подзадачи пройдены. Подзадачи приведены в следующей таблице:

ОграниченияБаллы за подзадачу
1$$$n \le 4$$$, $$$a_i \le 100$$$, $$$q \le 10$$$9
2$$$n \le 6$$$, $$$a_i \le 500$$$, $$$q \le 10$$$7
3$$$a_i \le 10^5$$$, $$$l_i = r_i$$$8
4$$$l_i = r_i$$$9
5$$$n \le 100$$$, $$$a_i \le 10^4$$$, $$$q \le 100$$$14
6$$$n \le 3000$$$, $$$a_i \le 10^5$$$, $$$q \le 3000$$$17
7$$$a_i \le 100$$$14
8$$$a_i \le 10^5$$$9
9Нет дополнительных ограничений13

Пример
Входные данные
7 5
4 6 1 1 5 12 9
1 7
2 5
3 3
2 5
3 6
Выходные данные
60
8
1
8
12
Примечание

Рассмотрим ответ на пятый запрос. $$$a_3 \cdot a_4 \cdot a_5 \cdot a_6 = 60$$$. Число $$$60$$$ имеет следующие делители: $$$1$$$, $$$2$$$, $$$3$$$, $$$4$$$, $$$5$$$, $$$6$$$, $$$10$$$, $$$12$$$, $$$15$$$, $$$20$$$, $$$30$$$, $$$60$$$.