#include<bits/stdc++.h>
using namespace std;
const int N=10e5,INF=1e9;
int nnnnn,ans,gg[N],g[N],sz[N],key[N],cnt[N],sn[N][2],rd[N],k,x,n,tot,minn,nn;
char opt;
inline void push_up(int k)
{
sz[k]=sz[sn[k][0]]+sz[sn[k][1]]+cnt[k];
}
inline void rotate(int &k,int d)
{
int k1=sn[k][d^1];
sn[k][d^1]=sn[k1][d];
sn[k1][d]=k;
push_up(k);
push_up(k1);
k=k1;
}
void insert(int &k,int x)
{
if(!k)
{
k=++tot;
sz[k]=cnt[k]=1;
key[k]=x;
rd[k]=rand();
return;
}
if(key[k]==x)
{
sz[k]++;
cnt[k]++;
return;
}
int d=x>key[k];
insert(sn[k][d],x);
if(rd[k]<rd[sn[k][d]]) rotate(k,d^1);
push_up(k);
}
void del(int &k,int x)
{
if(!k) return;
if(x!=key[k]) del(sn[k][x>key[k]],x);
else
{
if(cnt[k]>1)
{
cnt[k]--;
sz[k]--;
return;
}
else if(!sz[sn[k][0]]&&!sz[sn[k][1]])
{
cnt[k]--;
sz[k]--;
k=0;
return;
}
else
{
int d;
if(sz[sn[k][0]]*sz[sn[k][1]])
{
d=rd[sn[k][0]]>rd[sn[k][1]];
}
else d=sz[sn[k][0]]>=1;
rotate(k,d);
del(sn[k][d],x);
}
}
push_up(k);
}
int get_rnk(int k, int x)
{
if(!k) return 1;
if(key[k]==x) return sz[sn[k][0]]+1;
if(key[k]>x) return get_rnk(sn[k][0],x);
return sz[sn[k][0]]+cnt[k]+get_rnk(sn[k][1],x);
}
int get_val(int k, int x)
{
if(!k) return 0;
if(sz[sn[k][0]]>=x) return get_val(sn[k][0],x);
else if(sz[sn[k][0]]+cnt[k]>=x) return key[k];
return get_val(sn[k][1],x-sz[sn[k][0]]-cnt[k]);
}
int get_pre(int k, int x)
{
if(!k) return -INF;
if(key[k]>=x) return get_pre(sn[k][0],x);
return max(key[k],get_pre(sn[k][1],x));
}
int get_suf(int k, int x)
{
if(!k) return (1<<30);
if(key[k]<=x) return get_suf(sn[k][1],x);
return min(key[k],get_suf(sn[k][0],x));
}
inline long long read()
{
long long x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9')
{
if (ch == '-')
f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
{
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
void jc()
{
for(int i=1;i<=tot;i++)
{
cout<<key[i]<<" ";
}
cout<<endl;
}
void add(long long x)
{
for(int i=1;i<=tot;i++)
{
if(!g[i]) key[i]+=x;
}
for(int i=1;i<=tot;i++)
{
if(key[i]<minn&&!g[i])
{
del(k,i);
g[i]++;
nn--;
ans++;
}
}
}
void add2(long long x)
{
for(int i=1;i<=nnnnn;i++)
{
if(!g[i]) key[i]+=x;
if(key[i]<minn&&!g[i])
{
del(k,i);
g[i]++;
nn--;
ans++;
}
}
}
int main()
{
srand(1024);
n=read(),minn=read();
for(int i=1;i<=n;i++)
{
cin>>opt;
x=read();
if(opt=='I')
{
if(x>=minn)
{
nn++;
nnnnn++;
insert(k,x);
}
}
if(opt=='A')
{
add2(x);
}
if(opt=='S')
{
add2(-x);
}
if(opt=='F')
{
long long xxx=get_val(k,nnnnn-x+1);
if(x>nn) xxx=-1;
printf("%d\n",xxx);
}
}
printf("%d\n",ans);
return 0;
}