#include <bits/stdc++.h>
#define ll long long
#define db long double
#define vi vector<int>
#define vl vector<ll>
#define vvi vector<vector<int>>
#define vpi vector<pair<int,int>>
#define pb push_back
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define sz(v) (int)v.size()
#define fix(n, num) fixed<<setprecision(num)<<n
using namespace std;
int dx[] = {0, 0, 1, -1, 1, 1, -1, -1};
int dy[] = {-1, 1, 0, 0, 1, -1, 1, -1};
const ll N = 1e5 + 5, mod = 1e9 + 7, inf = 1e18;
struct node{
map<char,int>ch;
int sz=0;
int &operator[](int x){
return ch[x];
}
};
vector<multiset<int>>ct(N);
struct Trie{
vector<node>trie;
void clear(){
trie.clear();
trie.emplace_back();
}
Trie(){ clear(); }
int newNode(){
trie.emplace_back();
return sz(trie)-1;
}
void update(string &s,int op){
int cur=0;
for(int i=0;i<sz(s);++i){
if(trie[cur][s[i]]==0)
trie[cur][s[i]]=newNode();
cur=trie[cur][s[i]];
auto it= ct[i+1].lower_bound(trie[cur].sz);
if(it!=ct[i+1].end()&&*it==trie[cur].sz) {
ct[i + 1].erase(it);
}
trie[cur].sz+=op;
if(trie[cur].sz) {
ct[i + 1].insert(trie[cur].sz);
}
}
}
int query(int l){
if(sz(ct[l])==0)
return 0;
return *(--ct[l].end());
}
};
void TC() {
int q;
cin>>q;
vector<int>del(q+1);
vector<string>s(q+1);
Trie trie;
for (int i = 1; i <=q ; ++i) {
int ty; cin>>ty;
if(ty==1){
string st;
cin>>st;
reverse(all(st));
s[i]=st;
trie.update(st,1);
}
else if(ty==2){
int l,k;
cin>>k>>l;
cout<<(trie.query(l)>=k?"YES\n":"NO\n");
}
else{
int x;
cin>>x;
if(!del[x]){
trie.update(s[x],-1);
del[x]=1;
}
}
}
}
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t = 1;
// cin >> t;
for (int i = 1; i <= t; ++i) {
TC();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGRiIGxvbmcgZG91YmxlCiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSB2bCB2ZWN0b3I8bGw+CiNkZWZpbmUgdnZpIHZlY3Rvcjx2ZWN0b3I8aW50Pj4KI2RlZmluZSB2cGkgdmVjdG9yPHBhaXI8aW50LGludD4+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgcmFsbCh2KSB2LnJiZWdpbigpLHYucmVuZCgpCiNkZWZpbmUgc3oodikgKGludCl2LnNpemUoKQojZGVmaW5lIGZpeChuLCBudW0pIGZpeGVkPDxzZXRwcmVjaXNpb24obnVtKTw8bgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgZHhbXSA9IHswLCAwLCAxLCAtMSwgMSwgMSwgLTEsIC0xfTsKaW50IGR5W10gPSB7LTEsIDEsIDAsIDAsIDEsIC0xLCAxLCAtMX07CmNvbnN0IGxsIE4gPSAxZTUgKyA1LCBtb2QgPSAxZTkgKyA3LCBpbmYgPSAxZTE4OwoKc3RydWN0IG5vZGV7CiAgICBtYXA8Y2hhcixpbnQ+Y2g7CiAgICBpbnQgc3o9MDsKCiAgICBpbnQgJm9wZXJhdG9yW10oaW50IHgpewogICAgICAgIHJldHVybiBjaFt4XTsKICAgIH0KfTsKCnZlY3RvcjxtdWx0aXNldDxpbnQ+PmN0KE4pOwpzdHJ1Y3QgVHJpZXsKICAgIHZlY3Rvcjxub2RlPnRyaWU7CiAgICB2b2lkIGNsZWFyKCl7CiAgICAgICAgdHJpZS5jbGVhcigpOwogICAgICAgIHRyaWUuZW1wbGFjZV9iYWNrKCk7CiAgICB9CgogICAgVHJpZSgpeyBjbGVhcigpOyB9CgogICAgaW50IG5ld05vZGUoKXsKICAgICAgICB0cmllLmVtcGxhY2VfYmFjaygpOwogICAgICAgIHJldHVybiBzeih0cmllKS0xOwogICAgfQoKICAgIHZvaWQgdXBkYXRlKHN0cmluZyAmcyxpbnQgb3ApewogICAgICAgIGludCBjdXI9MDsKICAgICAgICBmb3IoaW50IGk9MDtpPHN6KHMpOysraSl7CiAgICAgICAgICAgIGlmKHRyaWVbY3VyXVtzW2ldXT09MCkKICAgICAgICAgICAgICAgIHRyaWVbY3VyXVtzW2ldXT1uZXdOb2RlKCk7CiAgICAgICAgICAgIGN1cj10cmllW2N1cl1bc1tpXV07CiAgICAgICAgICAgIGF1dG8gaXQ9IGN0W2krMV0ubG93ZXJfYm91bmQodHJpZVtjdXJdLnN6KTsKICAgICAgICAgICAgaWYoaXQhPWN0W2krMV0uZW5kKCkmJippdD09dHJpZVtjdXJdLnN6KSB7CiAgICAgICAgICAgICAgICBjdFtpICsgMV0uZXJhc2UoaXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyaWVbY3VyXS5zeis9b3A7CiAgICAgICAgICAgIGlmKHRyaWVbY3VyXS5zeikgewogICAgICAgICAgICAgICAgY3RbaSArIDFdLmluc2VydCh0cmllW2N1cl0uc3opOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGludCBxdWVyeShpbnQgbCl7CiAgICAgICAgaWYoc3ooY3RbbF0pPT0wKQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICByZXR1cm4gKigtLWN0W2xdLmVuZCgpKTsKICAgIH0KCn07Cgp2b2lkIFRDKCkgewogICAgaW50IHE7CiAgICBjaW4+PnE7CiAgICB2ZWN0b3I8aW50PmRlbChxKzEpOwogICAgdmVjdG9yPHN0cmluZz5zKHErMSk7CiAgICBUcmllIHRyaWU7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PXEgOyArK2kpIHsKICAgICAgICBpbnQgdHk7IGNpbj4+dHk7CiAgICAgICAgaWYodHk9PTEpewogICAgICAgICAgICBzdHJpbmcgc3Q7CiAgICAgICAgICAgIGNpbj4+c3Q7CiAgICAgICAgICAgIHJldmVyc2UoYWxsKHN0KSk7CiAgICAgICAgICAgIHNbaV09c3Q7CiAgICAgICAgICAgIHRyaWUudXBkYXRlKHN0LDEpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKHR5PT0yKXsKICAgICAgICAgICAgaW50IGwsazsKICAgICAgICAgICAgY2luPj5rPj5sOwogICAgICAgICAgICBjb3V0PDwodHJpZS5xdWVyeShsKT49az8iWUVTXG4iOiJOT1xuIik7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICBjaW4+Png7CiAgICAgICAgICAgIGlmKCFkZWxbeF0pewogICAgICAgICAgICAgICAgdHJpZS51cGRhdGUoc1t4XSwtMSk7CiAgICAgICAgICAgICAgICBkZWxbeF09MTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCn0KCmludDMyX3QgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKSwgY291dC50aWUoMCk7CgogICAgaW50IHQgPSAxOwogICAgLy8gIGNpbiA+PiB0OwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gdDsgKytpKSB7CiAgICAgICAgVEMoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=