#include<bits/stdc++.h>
const int inf=0x7fffffff;
char buf[10000000],*ptr=buf,ob[3000007],*op=ob;
int _(){
int x=0;
while(*ptr<48)++ptr;
while(*ptr>47)x=x*10+*ptr++-48;
return x;
}
void pr(int x){
if(x<0)*op++=‘-‘,x=-x;
int ss[15],sp=0;
do ss[++sp]=x%10+48;while(x/=10);
while(sp)*op++=ss[sp--];
*op++=10;
}
int n,mem[1000007],*mp=mem;
int xs[1000007],xp=0;
int _l,_r,_a;
void mins(int&a,int b){if(a>b)a=b;}
int min(int a,int b){return a<b?a:b;}
int max(int a,int b){return a>b?a:b;}
struct node{
node*lc,*rc;
int L,R,M;
int tp,mv,mxv,ans;
void fil(int x){
mv=mxv=x,tp=1;
ans=x-R;
}
void chk(){
if(mv>=_a)return;
if(mxv<_a)return fil(_a);
lc->chk();
rc->chk();
up();
}
void dn(){
if(tp){
lc->fil(mv);
rc->fil(mv);
tp=0;
}
}
void up(){
mv=min(lc->mv,rc->mv);
mxv=max(lc->mxv,rc->mxv);
ans=min(lc->ans,rc->ans);
}
void mxs(){
if(mv>=_a)return;
if(_l<=L&&R<=_r)return chk();
dn();
if(_l<=M)lc->mxs();
if(_r>M)rc->mxs();
up();
}
void que(){
if(_l<=L)return mins(_a,ans);
dn();
if(_l<=M)lc->que();
rc->que();
}
}ns[2000007],*np=ns,*rt;
node*build(int L,int R){
node*w=np++;
w->L=xs[L],w->R=xs[R];
if(L<R){
int M=L+R>>1;
w->M=xs[M];
w->lc=build(L,M);
w->rc=build(M+1,R);
w->up();
}else w->fil(xs[L]);
return w;
}
void mxs(int l,int r){
_l=xs[l],_r=xs[r],_a=xs[r];
if(_r>=xs[xp])_r=xs[xp-1];
if(_l<=_r)rt->mxs();
}
bool ed=0;
struct Q{
int tp,v,*vs;
void R(){
tp=_()==‘C‘-48;
v=_();
if(tp){
vs=mp,mp+=v;
for(int i=0;i<v;++i)xs[xp++]=vs[i]=_();
std::sort(vs,vs+v);
}
}
void cal(){
if(tp){
ed=1;
int px=0;
for(int i=0;i<v;++i){
int x=std::lower_bound(xs,xs+xp,vs[i])-xs;
mxs(px,x);
px=x+1;
}
mxs(px,xp);
}else{
_a=inf;
_l=*std::lower_bound(xs,xs+xp,v);
if(_l<xs[xp])rt->que();
if(_a>1e9)_a=-1;
if(!ed)_a=0;
pr(_a);
}
}
}qs[200007];
int main(){
fread(buf,1,sizeof(buf),stdin);
n=_();
for(int i=0;i<n;++i)qs[i].R();
std::sort(xs,xs+xp);
xp=std::unique(xs,xs+xp)-xs;
xs[xp]=inf;
rt=build(0,xp-1);
for(int i=0;i<n;++i)qs[i].cal();
fwrite(ob,1,op-ob,stdout);
return 0;
}