#include<cstdio>
#include<algorithm>
#define N 200010
#define which(u) (ls[f[(u)]]==(u))
using namespace std;
int n,m,a,f[N],ls[N],rs[N],val[N],d,tot,root,sze[N],ans;
char s[10];
int read()
{
int ans=0,fu=1;
char j=getchar();
for (;j<‘0‘ || j>‘9‘;j=getchar()) if (j==‘-‘) fu=-1;
for (;j>=‘0‘ && j<=‘9‘;j=getchar()) ans*=10,ans+=j-‘0‘;
return ans*fu;
}
void updt(int x)
{
sze[x]=sze[ls[x]]+sze[rs[x]]+1;
}
void Rotate(int u)
{
int v = f[u], w = f[v], b = which(u) ? rs[u] : ls[u];
if(w) which(v) ? ls[w] = u : rs[w] = u;
which(u) ? (ls[v] = b, rs[u] = v) : (rs[v] = b, ls[u] = v);
f[u] = w, f[v] = u;
if(b) f[b] = v;
updt(v), updt(u);
}
void Splay(int u, int tar)
{
while(f[u]!=tar)
{
if(f[f[u]]!=tar)
{
if(which(u)==which(f[u])) Rotate(f[u]);
else Rotate(u);
}
Rotate(u);
}
if(!tar) root=u;
}
void insert(int x)
{
int u=root,v=0;
while(u)
{
v=u;
if(x<=val[u]) u=ls[u];
else u=rs[u];
}
f[++tot]=v,val[tot]=x,sze[tot]=1;
if(v) x<=val[v]?ls[v]=tot:rs[v]=tot;
Splay(tot, 0);
}
int query(int x)
{
int u=root;
while (x && (x-1)!=sze[rs[u]])
{
if (sze[rs[u]]>=x) u=rs[u];
else x-=(sze[rs[u]]+1),u=ls[u];
}
return val[u];
}
int getmn(int x)
{
while (ls[x]) x=ls[x];
return x;
}
int main()
{
n=read();
m=read();
for (int i=1;i<=n;i++)
{
scanf("%s",s);
a=read();
if (s[0]==‘I‘)
if (a>=m) insert(a-d);
if (s[0]==‘S‘)
{
d-=a;
insert(m-d);
ans+=sze[ls[tot]];
f[root=rs[root]]=0;
}
if (s[0]==‘A‘) d+=a;
if (s[0]==‘F‘)
{
if (sze[root]<a) printf("-1\n");
else printf("%d\n",query(a)+d);
}
}
printf("%d",ans);
return 0;
}