eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

І знову сума...

І знову сума...

Реалізуйте структуру даних, яка підтримує множину S цілих чисел, з якою дозволяється виконувати наступні операції:

  • add(i) - додати у множину S число i (якщо воно там вже є, то множина не змінюється);
  • sum(l, r) - вивести суму усіх елементів x з S, які задовольняють нерівності lxr.

Вхідні дані

Спочатку множина S порожня. Перший рядок містить кількість операцій n (1n300000). Наступні n рядків містять операції. Кожна операція має вигляд або "**+ i**", або "**? l r**". Операція "**? l r**" задає запит sum(l, r).

Якщо операція "**+ i**" йде на початку або після іншої операції "+", то вона задає операцію add(i). Якщо ж вона йде після запиту "?", і результат цього запиту був y, то виконується операція add((i + y) mod 109).

У всіх запитах та операціях додавання параметри лежать в інтервалі від 0 до 109.

Вихідні дані

Для кожного запиту виведіть одне число - відповідь на запит.

Ліміт часу 3 секунди
Ліміт використання пам'яті 128 MiB
Вхідні дані #1
6
+ 1
+ 3
+ 3
? 2 4
+ 1
? 2 4
Вихідні дані #1
3
7