EduBrick

O. Логирование

2500 мс · 256 МБ · всё или ничего

Список событий изначально пуст. Каждое событие имеет тип — строчную латинскую букву. Обрабатывайте операции:

  • + i k c — вставить kk событий типа cc так, чтобы первое из них оказалось на позиции ii;
  • - i k — удалить kk событий, начиная с позиции ii;
  • ? i j — вывести количество различных типов на позициях от ii до jj.

События нумеруются с единицы; все операции корректны.

Формат ввода

В первой строке — число операций nn (1≤n≤3⋅1041 \le n \le 3 \cdot 10^4). Далее nn операций. Количество вставляемых или удаляемых за одну операцию событий kk не превосходит 10001000, а суммарное количество вставленных событий за всё время не превосходит 2⋅1052 \cdot 10^5.

Формат вывода

На каждый запрос ? выведите количество различных типов на отрезке.

Примеры

ввод
8
+ 1 4 w
+ 3 3 o
? 2 3
- 2 2
? 2 3
+ 2 2 t
? 1 6
- 1 6
вывод
2
1
3
ввод
2
+ 1 1 a
? 1 1
вывод
1
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.