#include<algorithm>
#include<string>
#include<time.h>
using namespace std;
#define INF 1<<30
string I="I";
string S="C";
string D="S";
string MAX="MAX";
string MIN="MIN";
string OP;
char c[30];
int i,nr;
struct treap
{
int x,priority,Min,Max,DMin;
treap *St,*Dr;
treap()
{
}
treap(int x,int priority,int Min,int Max,int DMin,treap *St,treap *Dr)
{
this->x=x;
this->priority=priority;
this->Min=Min;
this->Max=Max;
this->DMin=DMin;
this->St=St;
this->Dr=Dr;
}
};
treap *Rad,*nil;
void init()
{
srand(time(NULL));
Rad=nil=new treap(0,0,INF,-INF,INF,0,0);
}
void update(treap *&n)
{
n->Min=min(n->x,n->St->Min);
n->Max=max(n->x,n->Dr->Max);
n->DMin=min(min(n->St->DMin,n->Dr->DMin),min(n->x-n->St->Max,n->Dr->Min-n->x));
}
void rotst(treap *&n)
{
treap *t=n->St;
n->St=t->Dr; t->Dr=n;
n=t;
if(n->Dr!=nil)
update(n->Dr);
}
void rotdr(treap *&n)
{
treap *t=n->Dr;
n->Dr=t->St; t->St=n;
n=t;
if(n->St!=nil)
update(n->St);
}
void balance(treap *&n)
{
if(n->St->priority>n->priority)
rotst(n);
else
if(n->Dr->priority>n->priority)
rotdr(n);
update(n);
}
void Insert(treap *&n,int x)
{
if(n==nil)
{
n=new treap(x,rand()+1,x,x,INF,nil,nil);
return ;
}
if(x<n->x)
Insert(n->St,x);
else
if(n->x<x)
Insert(n->Dr,x);
balance(n);
}
void Delete(treap *&n,int x)
{
if(n==nil)
{
printf("-1\n");
return ;
}
if(x<n->x)
Delete(n->St,x);
else
if(n->x<x)
Delete(n->Dr,x);
else
{
if(n->St==nil&&n->Dr==nil)
{
delete n; n=nil;
return ;
}
if(n->St->priority>n->Dr->priority)
{
rotst(n);
Delete(n->Dr,x);
}
else
{
rotdr(n);
Delete(n->St,x);
}
}
balance(n);
}
int Search(treap *n,int x)
{
if(n==nil)
return 0;
if(x<n->x)
return Search(n->St,x);
else
if(n->x<x)
return Search(n->Dr,x);
else
return 1;
}
int main()
{
freopen("zeap.in","r",stdin);
freopen("zeap.out","w",stdout);
init();
while(fgets(c,30,stdin))
{
i=nr=0;
OP.clear();
while('A'<=c[i]&&c[i]<='Z')
{
OP.push_back(c[i]);
i++;
}
while(!('0'<=c[i]&&c[i]<='9'))
i++;
while('0'<=c[i]&&c[i]<='9')
{
nr=nr*10+c[i]-'0';
i++;
}
if(OP==I)
Insert(Rad,nr);
else
if(OP==D)
Delete(Rad,nr);
else
if(OP==S)
printf("%d\n",Search(Rad,nr));
else
{
if(Rad==nil||Rad->St==nil&&Rad->Dr==nil)
printf("-1\n");
else
{
if(OP==MIN)
printf("%d\n",Rad->DMin);
else
printf("%d\n",Rad->Max-Rad->Min);
}
}
}
return 0;
}