Вам задано масив з елементів a_0, a_1, \ldots, a_{255}, який спочатку заповнений нулями. Необхідно реалізувати два типи операцій: додавання на відрізку та знаходження суми на відрізку.
Операція додавання на відрізку описується як \textbf{Add}(L, R, value), тобто потрібно додати число до кожного елемента масиву a_L, a_{L+1}, \ldots, a_R. Операція знаходження суми на відрізку описується як \textbf{Get}(L, R) і повинна повертати \sum_{i=L}^{R} a_i.
Для економії часу на введення/виведення перша операція завжди \textbf{Add}(L, R, 1) з заданими та . Кожна наступна операція має вигляд
де L_{new} та R_{new} обчислюються так:
де означає залишок по модулю .
Після кожної такої операції потрібно виконати присвоєння L := L_{new} і R := R_{new}.
У єдиному рядку входу записано чотири цілих числа , , , (1 \leq q \leq 5 \cdot 10^6,\ 0 \leq L \leq R \leq 255,\ 1 \leq p \leq 125), де — кількість операцій , і — початкові значення, — модуль.
Виведіть значення \textbf{Get}(0, 255) після всіх виконаних операцій .
Приклад 1