#include<bits/stdc++.h>
#define N 1000060
using namespace std;
int n,minn,min2,sm,lev,o,rt,cct,ls[N],rs[N],val[N],cnt,w[N],rnd[N],siz[N];
int rd(){
int x=0,y=1;char c=getchar();
while(!isdigit(c)){ if(c=='-') y=-y;c=getchar(); }
while(isdigit(c)){ x=(x<<3)+(x<<1)+c-'0';c=getchar(); }
return x*y;
}
void zig(int &x){
int lch=ls[x];
ls[x]=rs[lch]; rs[lch]=x;
siz[lch]=siz[x]; siz[x]=w[x]+siz[ls[x]]+siz[rs[x]];
x=lch;
}
void zag(int &x){
int rch=rs[x];
rs[x]=ls[rch];ls[rch]=x;
siz[rch]=siz[x]; siz[x]=w[x]+siz[ls[x]]+siz[rs[x]];
x=rch;
}
void inst(int &x,int v){
if(!x){
x=++cnt;w[x]=siz[x]=1;val[x]=v;
rnd[x]=rand();
return;
}
siz[x]++;
if(v==val[x]){ w[x]++;return ; }
if(v<val[x]){
inst(ls[x],v);
if(rnd[ls[x]]<rnd[x]) zig(x);
return;
}
if(v>val[x]){
inst(rs[x],v);
if(rnd[rs[x]]<rnd[x]) zag(x);
return;
}
}
bool dlt(int &x,int v){
if(!x) return false;
if(v<val[x]){
bool ok=dlt(ls[x],v);
if(ok) siz[x]--;
return ok;
}
if(v>val[x]){
bool ok=dlt(rs[x],v);
if(ok) siz[x]--;
return ok;
}
if(w[x]>1){ w[x]-=1;siz[x]--;return true; }
if(ls[x]==0||rs[x]==0){ x=ls[x]+rs[x];return true; }
if(rnd[ls[x]]<rnd[x]){
zig(x);return dlt(x,v);
}
zag(x);return dlt(x,v);
}
void qypr(int x,int v){
if(!x) { return; }
if(val[x]<v) o=val[x],qypr(rs[x],v);
if(val[x]>=v) qypr(ls[x],v);
}
int qyrnk(int x,int v){
if(siz[ls[x]]+1<=v&&v<=siz[ls[x]]+w[x]) return val[x];
if(siz[ls[x]]+1>v) return qyrnk(ls[x],v);
if(v>siz[ls[x]]+w[x]) return qyrnk(rs[x],v-siz[ls[x]]-w[x]);
}
int main(){
srand(123);
n=rd();minn=min2=rd();
for(int i=1;i<=n;i++){
char c=getchar();int k;
while(c!='I'&&c!='A'&&c!='S'&&c!='F') c=getchar();
if(c=='I'){
k=rd();if(k-sm<minn) continue;
inst(rt,k-sm);cct++;
}
if(c=='A') k=rd(),sm+=k,minn-=k;
if(c=='S'){
k=rd();sm-=k;minn+=k;
while(1){
o=0;
qypr(rt,minn);
if(!o) break;
dlt(rt,o);lev++;cct--;
}
}
if(c=='F') {
k=rd();
if(k>cct) printf("-1\n");
else printf("%d\n",qyrnk(rt,cct-k+1)+sm);
}
}
cout<<lev;
return 0;
}