#include <bits/stdc++.h>
using namespace std;
ifstream fin ("zeap.in");
ofstream fout ("zeap.out");
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
struct treap
{
int val, pri;
int maxi,mini,mind;
treap *l=nullptr, *r=nullptr;
treap(int val)
{
this->val=val;
maxi=val;
mini=val;
mind=2e9;
pri=rng();
}
};
void upd(treap *p)
{
if(!p)
return;
p->maxi=p->val;
p->mini=p->val;
p->mind=2e9;
if(p->r)
{
p->maxi=p->r->maxi;
p->mind=min(p->mind, p->r->mind);
p->mind=min(p->mind, p->r->mini - p->val);
}
if(p->l)
{
p->mini=p->l->mini;
p->mind=min(p->mind, p->l->mind);
p->mind=min(p->mind, p->val - p->l->maxi);
}
}
void split(int val, treap *p, treap *&l, treap *&r)
{
if(!p)
{
l=r=nullptr;
return;
}
if(p->val<=val)
{
l=p;
split(val, p->r, p->r, r);
}
else
{
r=p;
split(val, p->l, l, p->l);
}
upd(l);
upd(r);
}
void mergef(treap *&p, treap *l, treap *r)
{
if(!r)
{
p=l;
return;
}
if(!l)
{
p=r;
return;
}
if(l->pri > r->pri)
{
p=l;
mergef(p->r, p->r, r);
}
else
{
p=r;
mergef(p->l, l, p->l);
}
upd(p);
}
void add(int x, treap *&p)
{
treap *l, *r, *mij;
split(x-1, p, l, r);
split(x, r, mij, r);
mij=new treap(x);
mergef(l, l, mij);
mergef(p, l, r);
}
void del(int x, treap *&p)
{
treap *l, *r, *mij;
split(x-1, p, l, r);
split(x, r, mij, r);
if(!mij)
fout<<"-1\n";
mergef(p, l, r);
}
bool caut(int x, treap *&p)
{
treap *l, *r, *mij;
split(x-1, p, l, r);
split(x, r, mij, r);
bool ok;
if(mij)
ok=true;
else
ok=false;
mergef(l, l, mij);
mergef(p, l, r);
return ok;
}
void maxdif(treap *p)
{
if(!p || p->mini==p->maxi)
{
fout<<"-1\n";
return;
}
fout<<p->maxi - p->mini<<'\n';
}
void mindif(treap *p)
{
if(!p || p->mind==2e9)
{
fout<<"-1\n";
return;
}
fout<<p->mind<<'\n';
}
int main()
{
char t;
int nr;
treap *root=nullptr;
while(true)
{
string s;
getline(fin, s);
if(s.empty())
break;
if(s=="MAX")
{
maxdif(root);
continue;
}
if(s=="MIN")
{
mindif(root);
continue;
}
istringstream iss(s);
iss>>t>>nr;
if(t=='I')
add(nr, root);
if(t=='S')
del(nr, root);
if(t=='C')
fout<<caut(nr, root)<<'\n';
}
return 0;
}