#include #include #include #include #include #include #include using namespace std; struct node { bool k; node *next[27]; }; node *root; void add(char *s) { int len=strlen(s); node *p=root; for(int i=0;inext[c-'a']==NULL) { p->next[c-'a']=new node(); } p=p->next[c-'a']; } p->k=1; } char s[1005]; bool flag; void dele(node *p,int k,int len) { char c=s[k]; if(p->next[c-'a']==NULL) return ; if(k==len-1) { p->next[c-'a']=NULL; return ; } dele(p->next[c-'a'],k+1,len); } bool dfs(node *p) { bool flag=0; if(p->k==1) return true; for(int i=0;i<26;i++) { if(p->next[i]!=NULL) { flag=max(dfs(p->next[i]),flag); } } return flag; } bool sear(char *s) { int len=strlen(s); node *p=root; for(int i=0;inext[c-'a']==NULL) return false; else { p=p->next[c-'a']; } } return dfs(p); } int main() { root=new node(); int t; scanf("%d",&t); while(t--) { scanf("%s",s); if(strcmp(s,"insert")==0) { scanf("%s",s); add(s); } else if(strcmp(s,"delete")==0) { scanf("%s",s); dele(root,0,strlen(s)); } else { scanf("%s",s); if(sear(s)) printf("Yes\n"); else printf("No\n"); } } }