C. Бань-ми
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

JATC любит Бань-ми (вьетнамское блюдо). Его привязанность к Бань-ми настолько велика, что он ест Бань-ми каждый день на завтрак. Сегодня утром, как обычно, он купил Бань-ми, но собирается насладиться им необычным образом.

Сначала, он разбивает Бань-ми на $$$n$$$ кусочков, выкладывает их в ряд и нумерует от $$$1$$$ до $$$n$$$. Для каждого кусочка $$$i$$$ он определяет его вкусность как $$$x_i \in \{0, 1\}$$$. JATC собирается съесть все кусочки один за другим. Каждый раз он выбирает произвольный из оставшихся кусочков и съедает его. Пусть этот кусочек был под номером $$$i$$$, тогда его удовольствие от Бань-ми увеличивается на $$$x_i$$$, вкусность каждого из оставшихся кусочков также увеличивается на $$$x_i$$$. Изначально удовольствие JATC равно $$$0$$$.

Например, пусть есть $$$3$$$ кусочка с вкусностями $$$[0, 1, 0]$$$. Если JATC съест второй кусочек, то его удовольствие станет равно $$$1$$$, а вкусность оставшихся кусочков будет равна $$$[1, \_, 1]$$$. Затем, если он съест первый кусочек, то его удовольствие станет равна $$$2$$$, а вкусность оставшихся кусочков станет $$$[\_, \_, 2]$$$. После того как JATC съест последний кусочек, его удовольствие станет равно $$$4$$$.

Однако JATC не хочет съесть сразу все кусочки, оставив часть на будущее. Он дал вам $$$q$$$ запросов, каждый из которых задаётся двумя целыми числам $$$l_i$$$ и $$$r_i$$$. Для каждого запроса выясните какое наибольшее удовольствие он может получить, если съест все кусочки в отрезке $$$[l_i, r_i]$$$ в каком-то порядке.

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

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

Первая строка содержит два целых числа $$$n$$$ и $$$q$$$ ($$$1 \le n, q \le 100\,000$$$).

Вторая строка содержит строку из $$$n$$$ символов, каждый из которых равен или '0' или '1'. Символ под номером $$$i$$$ определяет вкусность $$$i$$$-го кусочка.

Каждая из следующих $$$q$$$ строк содержит по два целых числа $$$l_i$$$ или $$$r_i$$$ ($$$1 \le l_i \le r_i \le n$$$) — отрезок соответствующего запроса.

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

Выведите $$$q$$$ строчек, где $$$i$$$-я из них содержит одно целое число — ответ на $$$i$$$-й запрос по модулю $$$10^9 + 7$$$.

Примеры
Входные данные
4 2
1011
1 4
3 4
Выходные данные
14
3
Входные данные
3 2
111
1 2
3 3
Выходные данные
3
1
Примечание

В первом примере:

  • В запросе $$$1$$$, одним из оптимальных порядков поедания является следующий: $$$1$$$, $$$4$$$, $$$3$$$, $$$2$$$.
  • В запросе $$$2$$$: и порядок $$$3$$$, $$$4$$$, и порядок $$$4$$$, $$$3$$$ приводят к одному и тому же ответу.

Во втором примере любой порядок поедания кусочков приведёт к одному и тому же ответу.