//开放寻址法
//数组长度一般要开到题目数据范围的2~3倍
#include<iostream>
#include<cstring>
using namespace std;
//null代表无穷大
//最大和最小
//0x3f3f3f3f = 1061109567,0xc0c0c0c0 = -1061109568
const int N = 2e5 + 3, null = 0x3f3f3f3f;//取质数的方法和之前一样
int h[N], n, x;
string op;
int find(int x)
{
int k = (x % N + N) % N;
//不会死循环因为数组开的够大
while (h[k] != null && h[k] != x)//满足条件就向后找
{
k++;
if (k == N) k = 0;//如果从k后都找不到,就从前遍历
}
return k;//若没有元素抢占位置则k为插入位置,若有则为返回查询的位置
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n;
memset(h, 0x3f, sizeof h);
while (n--)
{
cin >> op >> x;
int k = find(x);
if (op == "I") h[k] = x;
else
{
if (h[k] != null) cout << "Yes" << '\n';
else cout << "No" << '\n';
}
}
return 0;
}