#include <bits/stdc++.h>
#define INF 1000000009
using namespace std;
struct tr
{
int min, max, md, k, p;
tr * l, *r;
tr(int _k)
{
p = rand();
l = r = NULL;
min = max = k = _k;
md = INF;
}
} *t;
string s;
int n, x;
void upd(tr * t)
{
if(!t) return;
t->md = INF;
t->min = t->max = t->k;
if(t->l)
t->min = min(t->min, t->l->min),
t->max = max(t->max, t->l->max),
t->md = min(t->md, min(t->l->md, t->k - t->l->max ) );
if(t->r)
t->min = min(t->min, t->r->min),
t->max = max(t->max, t->r->max),
t->md = min(t->md, min(t->r->md, t->r->min - t->k) );
}
void split(tr * rt, int k, tr* &l, tr* &r)
{
if(rt == NULL)
l = r = NULL;
else if(k < rt->k)
{
split(rt->l, k, l, rt->l);
r = rt;
}
else
{
split(rt->r, k, rt->r, r);
l = rt;
}
upd(rt);
}
void merge(tr* &rt, tr* l, tr* r)
{
if(!l || !r)
rt = l ? l : r;
else if(l->p > r->p)
{
merge(l->r, l->r, r);
rt = l;
}
else
{
merge(r->l, l, r->l);
rt = r;
}
upd(rt);
}
int Min(tr* t)
{
if(t)
return t->md;
else return -1;
}
int Max(tr* t)
{
if(t && (t->l || t->r))
return t->max - t->min;
else return -1;
}
void add(tr * &p, int nr)
{
tr * t, *ls, *rs;
t = new tr(nr);
split(p, nr, ls, rs);
merge(ls, ls, t);
merge(p, ls, rs);
}
int sch(tr* &p, int nr)
{
int ok = 1;
tr * t, *ls, *rs;
split(p, nr, ls, rs);
split(ls, nr-1, ls, t);
if(!t) ok = 0;
merge(ls, ls, t);
merge(p, ls, rs);
return ok;
}
void del(tr* &p, int nr)
{
tr * t, *ls, *rs;
split(p, nr, ls, rs);
split(ls, nr-1, ls, t);
if(t) delete(t);
merge(p, ls, rs);
}
int main()
{
ios_base :: sync_with_stdio(false);
freopen("zeap.in", "r", stdin);
freopen("zeap.out", "w", stdout);
cin>>s;
while(!cin.eof())
{
if(s == "I")
{
cin >> x;
//add(t, x);
}
if(s == "MAX") ;//cout << Max(t) << '\n';
if(s == "MIN") {
int pp = 0;//Min(t);
if(pp == INF) pp = -1;
cout << pp << '\n';
}
if( s == "C")
{
cin >> x;
int op = 0;//sch(t, x);
//if(op==0)
cout << op << '\n';
}
if( s == "S")
{
cin >> x;
int op = 0;//sch(t, x);
if(op==0)
cout << -1 << '\n';
else del(t, x);
}
cin>>s;
}
}