#include <set>
#include <algorithm>
using namespace std;
#define mp make_pair
#define t first
#define n second
#define common\
int nst = (nod << 1), ndr = (nst | 1), mij = (li + lf) >> 1
const int MAX_N = 300005;
const int INF = 0x3f3f3f3f;
int N, T, V[MAX_N], A[2*MAX_N], val, poz;
set <int> S;
pair <int, int> Q[MAX_N];
void normalizare() {
sort(V+1, V+N+1);
N = unique(V+1, V+N+1)-V-1;
}
void update(int nod, int li, int lf) {
if(li == lf) {
A[nod] = val;
return;
}
common;
if(poz <= mij) update(nst, li, mij);
else update(ndr, mij+1, lf);
A[nod] = INF;
A[nod] = min(A[nst], A[ndr]);
}
void insert(int x) {
if(S.find(x) != S.end()) return;
set<int>::iterator it1 = S.upper_bound(x);
if(it1 != S.end()) {
poz = lower_bound(V+1, V+N+1, *it1) - V;
val = *it1 - x;
update(1, 1, N);
}
if(it1 != S.begin()) {
poz = lower_bound(V+1, V+N+1, x) - V;
val = x - *(--it1);
update(1, 1, N);
}
S.insert(x);
}
void erase(int x) {
if(S.find(x) == S.end()) {
printf("-1\n");
return;
}
val = INF;
poz = lower_bound(V+1, V+N+1, x) - V;
update(1, 1, N);
S.erase(x);
set<int>::iterator it1 = S.upper_bound(x), it2 = it1;
--it2;
if(it1 == S.begin()) {
val = INF;
poz = lower_bound(V+1, V+N+1, *it1) - V;
update(1, 1, N);
}
if(it1 != S.begin() && it1 != S.end()) {
val = *it1 - *it2;
poz = lower_bound(V+1, V+N+1, *it1) - V;
update(1, 1, N);
}
if(it2 == S.begin()) {
val = INF;
poz = lower_bound(V+1, V+N+1, *it2) - V;
update(1, 1, N);
}
}
void find(int x) {
printf("%d\n", (S.find(x) != S.end()));
}
void find_max() {
if(S.size() < 2)
printf("-1\n");
else
printf("%d\n", *S.rbegin() - *S.begin());
}
void find_min() {
(A[1] == INF)? printf("-1\n"): printf("%d\n", A[1]);
}
int main() {
freopen("zeap.in","rt",stdin);
freopen("zeap.out","wt",stdout);
char s[10];
int nr = 0;
while(scanf("%s", s) != EOF)
if(s[0] == 'I') {
scanf("%d", &nr);
Q[++T] = mp(1, nr);
V[++N] = nr;
}
else if(s[0] == 'S') {
scanf("%d", &nr);
Q[++T] = mp(2, nr);
}
else if(s[0] == 'C') {
scanf("%d", &nr);
Q[++T] = mp(3, nr);
}
else if(s[0] == 'M' && s[1] == 'A')
Q[++T] = mp(4, 0);
else
Q[++T] = mp(5, 0);
normalizare();
memset(A, INF, sizeof A);
for(int i = 1; i <= T; ++i)
if(Q[i].t == 1)
insert(Q[i].n);
else if(Q[i].t == 2)
erase(Q[i].n);
else if(Q[i].t == 3)
find(Q[i].n);
else if(Q[i].t == 4)
find_max();
else
find_min();
}