import java.util.Arrays;
import java.util.Scanner;
public class Main{
static final int N=100003;
static int e[]=new int[N];
static int ne[]=new int[N];
static int h[]=new int[N];
static int idx;
static void insert(int x){//其實就是單鏈表的頭插法
int k=(x%N+N)%N;//x可能爲負數,使它>=0
e[idx]=x;
ne[idx]=h[k];
h[k]=idx;
idx++;
}
static boolean find(int x){//其實就是遍歷鏈表
int k=(x%N+N)%N;
for(int i=h[k];i!=-1;i=ne[i])
if(e[i]==x)
return true;
return false;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
Arrays.fill(h,-1);
while(n-->0){
String op=scan.next();
int x=scan.nextInt();
if(op.equals("I")){
insert(x);
}
else{
if(find(x)) System.out.println("Yes");
else System.out.println("No");
}
}
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main{
static final int N=200003;//通常取數據範圍N的2倍 的 大於它的第一個質數
static int INF=(int)1e9+5;
static int h[]=new int[N];
static int find(int x){
int k=(x%N+N)%N;
while(h[k]!=INF && h[k]!=x){//這個位置有數而且不等於x
k++;//尋找下一個位置
if(k==N) k=0;//找到最後一個位置,從頭開始尋找
}
return k;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
Arrays.fill(h,INF);//初始化爲一個不在數據範圍的數
int n=scan.nextInt();
while(n-->0){
String op=scan.next();
int x=scan.nextInt();
int k=find(x);
if(op.equals("I")){
h[k]=x;
}
else{
if(h[k]!=INF) System.out.println("Yes");
else System.out.println("No");
}
}
}
}