Inserção Inteligente

#46
Made by: Luiz H. Lago
2000MB
2s

A equipe responsável pela maratona de programação está desenvolvendo um sistema que, em breve, realizará a compressão dos arquivos gerados durante a Maratona de Programação. Antes de iniciar o processo de implementação da compressão, é fundamental monitorar o tamanho desses arquivos para garantir que o sistema esteja preparado para lidar eficientemente com o processamento de grandes volumes de dados.

Cada arquivo submetido no sistema possui um tamanho específico, e, para realizar o levantamento das informações, a equipe precisa de uma ferramenta que permita:

  • Registrar o tamanho dos arquivos à medida que eles são recebidos.
  • Realizar consultas sobre o espaço necessário para salvar um grupo de arquivos.

Como os desenvolvedores estão interessados em analisar arquivos com base em seu tamanho no conjunto de dados, os grupos serão definidos por números ordinais que representam a ordem dos arquivos em relação ao seu tamanho (por exemplo, do 10º maior ao 20º maior arquivo).

Abaixo um exemplo de como as operações podem ocorrer:

    -Operação-      |   -Dados-     |   -Dados Ordenados-
Inserção 5          | [5]           | [5]
Inserção 3          | [5,3]         | [5+3]
Inserção 7          | [5,3,7]       | [7,5,3]
Consulta 1 2        => 7+5 = 12     | (7+5)
Inserção 7          | [5,3,7,7]     | [7,7,5,3]
Consulta 1 2        => 7+7 = 14     | (7+7)
Inserção 6          | [5,3,7,7,6]   | [7,7,6,5,3]
Consulta 2 5        => 7+6+5+3 = 21 |   (7+6+5+3)

Essas consultas são essenciais para entender a distribuição dos tamanhos dos arquivos e, assim, definir a melhor estratégia de compressão para os diferentes intervalos de tamanho.

Sua tarefa é cria a função solution e faça uso da variavel abc e implementar um sistema que gerencie e responda às consultas de forma eficiente, permitindo que a equipe tenha uma visão clara do armazenamento e se prepare adequadamente para o processo de compressão.

Input

Será fornecido na primeira linha um valor $Q$. $(1 \le Q \le 10^6)$

Nas próximas $Q$ linhas serão fornecidos um de dois tipos de consultas: I (Inserções) e C (Consultas).

Para linhas de inserções, elas começam com o caractere 'I' e é seguida por um valor $T$ que representa o tamanho do novo arquivo que deve ser adicionado a base de dados. $(1\le T \le 2^{26})$

Para linhas de consultas, elas começam com o caractere 'C' e é seguida por dois valores $A$ e $B$ que representa o range do $Aº$ maior arquivo até o $Bº$ maior arquivo. $(1 \le A \le B \le Q)$

É garantido para as consultas que o $A$-th e $B$-th elementos existem.

Output

Para cada consulta realizada, retorme o somatório do intervalo na base de dados ordenada.


Input Example
Output Example
12
I 3
I 11
I 4
I 2
I 11
C 2 5
I 7
I 11
I 1
C 1 6
I 8
C 2 4
20
47
30

11
I 3
I 6
I 8
I 3
I 1
C 2 4
C 1 3
C 4 4
I 6
C 2 4
C 1 3
12
17
3
15
20