#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; struct Node { int sz; Node* ch[26]; Node() { memset(ch, 0, sizeof ch); sz = 0; } void insert(char *s) { sz++; if(!*s) return ; int i = (*s) - 'a'; if(!ch[i]) ch[i] = new Node(); ch[i]->insert(s+1); } int del(char *s) { if(!*s) { int ret = sz; sz = 0; memset(ch, 0, sizeof ch); return ret; } int i = (*s) - 'a'; if(!ch[i]) return 0; int ret = ch[i]->del(s+1); sz -= ret; return ret; } bool query(char *s) { if(!*s) { return sz > 0; } int i = (*s) - 'a'; if(!ch[i]) return false; return ch[i]->query(s + 1); } }; char op[123], s[123]; int main() { int n; scanf("%d", &n); Node *r = new Node(); while(n--) { scanf("%s%s", op, s); if(op[0] == 'i') r->insert(s); else if(op[0] == 'd') r->del(s); else puts(r->query(s) ? "Yes" : "No"); } return 0; }