Module: Bor


Problem

6 /10


Consultas de strings

Problem

Existe um conjunto de strings que está inicialmente vazio. Existem três operações diferentes que precisam ser tratadas neste conjunto de linhas:
  • 1 s: adiciona a string fornecida ao conjunto.
  • 2 k l: Descubra se existem k strings (não necessariamente distintas) no conjunto que possuem um sufixo comum de comprimento l. Este sufixo não precisa ser o maior.
  • 3 i: Remova a string do conjunto que foi adicionada na i-ésima operação (caso ainda não tenha sido removida).
Entrada:
A primeira linha contém um único inteiro - o número de operações q (1 <= q <= 105) a serem processadas.
Em seguida, cada linha contém uma descrição da solicitação. Primeiro é um número 1, 2 ou 3, indicando o tipo de solicitação. 
Se esta for uma consulta do primeiro tipo, a string s é fornecida abaixo, cujo comprimento total não excede 105.
Se esta é uma consulta do segundo tipo, então dois números inteiros k e l são fornecidos (1 <= k, l <= 105).
Se for uma requisição do terceiro tipo, então é dado o número i (1 <= i <= o número da operação atual), onde i é o número da operação do primeiro tipo.

Saída:
Para cada consulta do segundo tipo, imprima a palavra "SIM" em uma linha separada, se existirem as linhas necessárias, e "NÃO" caso contrário.

Exemplo:
 
Entrada Saída
9
1 aba
1 acesso
2 2 2
2 2 3
1 aaaa
1 ababa
2 3 2
3 1
2 3 2
SIM
NÃO
SIM
NÃO