#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
inline int cmp (int a, int b ) { return a<b ; }
int v[400000],op[400000],val[400000],maxa[1100000],mina[1100000],Min[1100000],n,q,sw[400000],lg,cont;
void sterge (int st, int dr, int poz, int k)
{
if (st==dr)
{
mina[k]=maxa[k]=-1;
Min[k]=-1;
return ;
}
int mij= (st+dr)/2;
if (poz<=mij)
sterge (st,mij,poz,2*k);
else
sterge (mij+1,dr,poz,2*k+1);
mina[k]=mina[2*k];
if (mina[k]==-1)
mina[k]=mina[2*k+1];
maxa[k]=maxa[2*k+1];
if (maxa[k]==-1)
maxa[k]=maxa[2*k];
Min[k]=-1;
if (maxa[2*k]!=-1 && mina[2*k+1]!=-1)
Min[k]=mina[2*k+1]-maxa[2*k];
if (Min[k]==-1 || Min[2*k]<Min[k] && Min[2*k]!=-1)
Min[k]=Min[2*k];
if (Min[k]==-1 || Min[2*k+1]<Min[k] && Min[2*k+1]!=-1)
Min[k]=Min[2*k+1];
}
void insert (int st, int dr , int poz, int k)
{
if (st==dr)
{
mina[k]=maxa[k]=v[poz];
Min[k]=-1;
return ;
}
int mij= (st+dr)/2;
if (poz<=mij)
insert (st,mij,poz,2*k);
else
insert (mij+1,dr,poz,2*k+1);
mina[k]=mina[2*k];
if (mina[k]==-1)
mina[k]=mina[2*k+1];
maxa[k]=maxa[2*k+1];
if (maxa[k]==-1)
maxa[k]=maxa[2*k];
Min[k]=-1;
if (maxa[2*k]!=-1 && mina[2*k+1]!=-1)
Min[k]=mina[2*k+1]-maxa[2*k];
if (Min[k]==-1 || Min[2*k]<Min[k] && Min[2*k]!=-1)
Min[k]=Min[2*k];
if (Min[k]==-1 || Min[2*k+1]<Min[k] && Min[2*k+1]!=-1)
Min[k]=Min[2*k+1];
}
/*void insert (int poz)
{
s=0;
for (i=poz;i;i-=(i^(i&(i-1))))
s+=aib[i];
s1=0;sum=0;
if (s>1)
{
for (p=lg;p;p>>=1)
if (s1+p<=n && sum+aib[p]<s-1)
{
s1+=p;
sum+=aib[p];
}
s1++;
h[poz1[s1]]=h[nr--];
poz1[poz2[nr+1]]=poz1[s1];
poz2[poz1[s1]]=poz2[nr+1];
poz1[s1]=0;
coboara (poz1[s1]);
poz1[s1]=++nr;
h[nr]=v[s]-v[s1];
poz2[nr]=s1;
urca ();
}
if (s<cont)
{
for (p=lg;p;p>>=1)
if (s1+p<=n && sum+aib[p]<s+1)
{
s1+=p;
sum+=aib[p];
}
s1++;
poz1[s1]=++nr;
h[nr]=v[s]-v[s1];
poz2[nr]=s1;
urca ();
}
} */
void solve ()
{
int s,p,i;
ofstream g("zeap.out");
for (i=1;i<=q;i++)
{
s=0;
if (op[i]==1)
{
p=lg;
for (;p;p>>=1)
if (p+s<=n && v[s+p]<=val[i])
s+=p;
if (sw[s]==0)
{
sw[s]=1;
insert (1,n,s,1);
++cont;
}
}
if (op[i]==2)
{
p=lg;
for (;p;p>>=1)
if (p+s<=n && v[s+p]<=val[i])
s+=p;
if (v[s]==val[i] && sw[s]==1)
{
sw[s]=0;
sterge(1,n,s,1);
--cont;
}
else
g<<"-1\n";
}
if (op[i]==3)
{
p=lg;
for (;p;p>>=1)
if (p+s<=n && v[s+p]<=val[i])
s+=p;
if (v[s]==val[i] && sw[s]==1)
g<<"1\n";
else
g<<"0\n";
}
if (op[i]==4)
if (cont>=2)
g<<maxa[1]-mina[1]<<'\n';
else
g<<"-1\n";
if (op[i]==5)
if (cont>=2)
g<<Min[1]<<'\n';
else
g<<"-1\n";
}
g.close();
}
void proces ()
{
int i,j;
sort (v+1,v+n+1,cmp);
j=0;
for (i=1;i<n;i++)
if (v[i]!=v[i+1])
v[++j]=v[i];
v[++j]=v[n];
n=j;
for (lg=1;lg<=n;lg<<=1);
lg>>=1;
}
void citire ()
{
int nr;
ifstream f("zeap.in");
char s[10];
n=0;
q=0;
while (f>>s)
{
if (strlen(s)==1)
{
f>>nr;
if (s[0]=='I')
{
v[++n]=nr;
op[++q]=1;
val[q]=nr;
}
if (s[0]=='S')
{
op[++q]=2;
val[q]=nr;
}
if (s[0]=='C')
{
op[++q]=3;
val[q]=nr;
}
}
else
{
if (s[1]=='A')
op[++q]=4;
else
op[++q]=5;
}
}
f.close();
}
void init (int st, int dr, int k)
{
if (st==dr )
{
maxa[k]=mina[k]=Min[k]=-1;
return;
}
int mij =(st+dr)/2;
init (st,mij,2*k);
init (mij+1,dr,2*k+1);
Min[k]=mina[k]=maxa[k]=-1;
}
int main()
{
citire ();
proces();
init(1,n,1);
solve ();
return 0;
}