Obtiažnosť: ťažká

Simple set 2

Táto úloha sa od Simple set 1 líši len pridaním ďalšieho druhu požiadavky: odstránenie prvku z množiny. Opäť vám bude stačiť nevyvažovaný binárny strom, tentoraz však musí byť o kúsok schopnejší.

Úloha

Tentoraz sa musíte vysporiadať s týmito tromi typmi požiadaviek:

  • Zistite, či sa číslo nachádza v množine.
  • Vložte číslo do množiny.
  • Odstráňte číslo z množiny.

Požiadavka na odstránenie prvku môžu obsahovať aj číslo, ktoré sa v množine nenachádza. V takomto prípade požiadavka nemá žiaden efekt.

Vstup

Na prvom riadku je číslo $n$ ($1 \leq n \leq 10^5$) ­— počet požiadaviek.

Na ďalších $n$ riadkoch sú popisy jednotlivých požiadaviek. Na $i$-tom riadku sú dve čísla $t_i$ a $x_i$ popisujúce $i$-tu požiadavku.

Ak $t_i = 1$, tak sa jedná o požiadavku prvého typu. Na túto požiadavku treba odpovedať, či sa číslo $x_i$ nachádza v množine.

Ak $t_i = 2$, tak sa jedná o požiadavku druhého typu a číslo $x_i$ treba vložiť do množiny.

Ak $t_i = 3$, tak sa jedná o požiadavku tretieho typu a číslo $x_i$ treba z množiny odstrániť.

Platí $t_i \in {1, 2, 3}$ a $1 \leq x_i \leq 10^9$.

Výstup

Pre každú požiadavku prvého typu vypíšte jeden riadok a na ňom reťazec YES, ak sa dané číslo nachádza v množine, inak reťazec NO.

Príklad

Vstup

8
2 1
2 2
2 3
2 4
1 2
1 5
3 2
1 2

Výstup

YES
NO
NO

V prvej požiadavke prvého typu sa prvok $2$ nachádzal v množine. Pred treťou bol však zmazaný.