Олимпиадный тренинг

Задача . F. Nauuo и ошибка


Nauuo — девочка, которая любит программировать.

Однажды она решала задачу, в которой нужно было посчитать сумму некоторых чисел по модулю \(p\).

Она написала следующий код и получила вердикт «Неправильный ответ».

Вскоре она нашла свою ошибку: функция ModAdd работает только для чисел в полуинтервале \([0,p)\), но числа в этой задаче могут быть вне этого диапазона. Она заинтересовалась неправильной функцией и захотела узнать результат ее выполнения.

К сожалению исходный код работает слишком долго, так что она попросила вас помочь.

Вам дан массив целых чисел \(a_1,a_2,\ldots,a_n\) и число \(p\), Nauuo сделает \(m\) запросов. В каждом запросе вам даны \(l\) и \(r\), вам нужно посчитать результат выполнения Sum(a,l,r,p). Вы можете посмотреть определение функции Sum в данном псевдокоде.

Обратите внимания, что числа в данном коде не переполняются.

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

В первой строке записаны три целых числа \(n\), \(m\), \(p\) (\(1 \le n \le 10^6\), \(1 \le m \le 2 \cdot 10^5\), \(1 \le p \le 10^9\)) — длина данного массива, количество запросов и модуль. Обратите внимание, что модуль используется только в функции ModAdd.

Во второй строке записаны \(n\) целых чисел \(a_1,a_2,\ldots,a_n\) (\(-10^9\le a_i\le10^9\)) — данный массив.

В каждой из следующих \(m\) строк записаны два целых числа \(l\), \(r\) (\(1\le l\le r\le n\)) — вам нужно посчитать значение функции Sum(a,l,r,p).

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

Выведите \(m\) целы чисел, ответов на запросы в данном порядке.


Примеры
Входные данныеВыходные данные
1 4 5 6
7 2 -3 17
2 3
1 3
1 2
2 4
4 4
-1
0
3
10
11

time 4000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя