Module: Bor


Problem

6 /10


Query di stringa

Problem

C'è un set di stringhe inizialmente vuoto. Ci sono tre diverse operazioni che devono essere gestite su questo insieme di righe:
  • 1 s: aggiunge la stringa data all'insieme.
  • 2 k l: Scopri se ci sono k stringhe (non necessariamente distinte) nell'insieme che hanno un suffisso comune di lunghezza l. Questo suffisso non deve essere il più grande.
  • 3 i: rimuove la stringa dall'insieme che è stata aggiunta nell'i-esima operazione (se non è già stata rimossa).
Inserimento:
La prima riga contiene un singolo numero intero: il numero di operazioni q (1 <= q <= 105) da elaborare.
Successivamente, ogni riga contiene una descrizione della richiesta. Innanzitutto è un numero 1, 2 o 3, che indica il tipo di richiesta. 
Se si tratta di una query del primo tipo, di seguito viene fornita la stringa s, la cui lunghezza totale non supera 105.
Se si tratta di una query del secondo tipo, vengono forniti due numeri interi k e l (1 <= k, l <= 105).
Se si tratta di una richiesta del terzo tipo, viene fornito il numero i (1 <= i <= il numero dell'operazione corrente), dove i è il numero dell'operazione del primo tipo.

Uscita:
Per ogni query del secondo tipo, stampa la parola "SI" su una riga separata, se esistono le righe necessarie, e "NO" altrimenti.

Esempio:
 
Input Uscita
9
1 ab
1 accaba
2 2 2
2 2 3
1 aaaa
1 abbaba
2 3 2
3 1
2 3 2

NO

NO