E. Передача уровней
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Оптимизация количества переданных по сети данных — важная и интересная часть разработки любого сетевого приложения.

В одной секретной игре, разрабатывающейся в недрах компании ZeptoLab, игровой мир представляет собой n уровней, расположенных по кругу. С i-го уровня можно попасть на уровни i - 1 и i + 1, при этом с уровня 1 можно попасть на уровень n и наоборот. Карта i-го уровня занимает объём в ai байт.

В целях сокращения переданного трафика, игра получает уровни следущим образом. На сервере все уровни разбиты на m групп, и каждый раз, когда игрок впервые оказывается на одном из уровней очередной группы, сервер отправляет приложению все уровни этой группы единым пакетом. Таким образом, пока игрок путешествует внутри уровней одной группы, приложению не требуется никакой новой информации. В силу ограничений технического характера, пакет может содержать произвольное количество уровней, но суммарный размер описаний их карт не должен превосходить b байт, где b — некоторая положительная целая константа.

Игроки, как правило, проходят уровни один за другим, поэтому было принято решение разбить n уровней на m групп таким образом, чтобы каждая группа являлась сплошным отрезком, содержащим несколько соседних уровней (в том числе, группа может содержать два соседних уровня n и 1). В частности, если описания всех уровней суммарно весят не более b байт, то их всех можно объединить в одну грппу, чтобы отправить единым пакетом.

Определите, какое минимальное количество групп требуется образовать, чтобы организовать уровни игры, соблюдая указанные условия?

Так как разработка игры — длительный процесс, а технологии не стоят на месте, то пока невозможно точно предсказать, какое значение примет константа b, ограничивающая размер пакета. Поэтому разработчики просят вас определить ответ для нескольких значений b.

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

В первой строке находятся два числа n, q (2 ≤ n ≤ 106, 1 ≤ q ≤ 50) — количество уровней в игровом мире и количество различных значений b, которые вам необходимо обработать.

Во второй строке находятся n целых чисел ai (1 ≤ ai ≤ 109) — размеры уровней в байтах.

В последующих q строках находятся целые числа bj (), обозначающие значения константы b, для которых вам требуется определить ответ.

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

Для каждого значения kj из входных данных выведите в отдельной строке целое число mj (1 ≤ mj ≤ n), обозначающее минимальное количество групп, на которые нужно разбить уровни игры для передачи по сети, соблюдая указанные условия.

Примеры
Входные данные
6 3
2 4 2 1 3 2
7
4
6
Выходные данные
2
4
3
Примечание

В тесте из условия можно поступить следующим образом.

  • при b = 7 можно разбить на два отрезка: 2|421|32 (обратите внимание, один из отрезков содержит пятый, шестой и первый уровни);
  • при b = 4 можно разбить на четыре отрезка: 2|4|21|3|2;
  • при b = 6 можно разбить на три отрезка: 24|21|32|.