У вас є масив. Спочатку він зовсім малесенький — складається всього з одного числа.
Та з кожним запитом він ставатиме все більшим і більшим. Чи впораєтеся ви з цим масивом і запитами на ньому?Формальніше, вам необхідно обробити такі запити:
COPY — скопіювати масив та додати його в кінець
CHANGE pos val — замінити значення в позиції на
SUM left right — обчислити суму всіх елементів на відрізку [left; right] за модулем 10^9+7
У першому рядку вхідних даних міститься єдине число (1 \leq A \leq 10^9) — єдиний елемент масиву.
У другому рядку задано число (1 \leq Q \leq 2 \cdot 10^5) — кількість запитів.
В наступних рядках задані запити в одному з наступних форматів:
COPY — запит першого типу
CHANGE pos val — запит другого типу (1 \leq pos \leq 10^{18},\ 1 \leq val \leq 10^9)
SUM left right — запит третього типу (1 \leq left \leq right \leq 10^{18})
Гарантується, що , , із другого і третього запитів не перевищують поточний розмір масиву.
Для кожного запиту третього типу виведіть єдине число — суму всіх чисел на відповідному відрізку за модулем 10^9+7.
Приклад 1