Скопіюйте масив#8256

Скопіюйте масив

1 секунда
256 мегабайтів
Складна

У вас є масив. Спочатку він зовсім малесенький — складається всього з одного числа.

Та з кожним запитом він ставатиме все більшим і більшим. Чи впораєтеся ви з цим масивом і запитами на ньому?Формальніше, вам необхідно обробити такі запити:

Вхідні дані

У першому рядку вхідних даних міститься єдине число (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

Loading
Loading