#include <iostream>
#define lp tr[u].l
#define rp tr[u].r
#define INF 2047483647
using namespace std;
const int N = 1e5 + 10;
int idx = 0, root = 0, num = 0, ans = 0;
int ang, sum;
bool st[N];
struct node {
int l, r;
int k, val;
int cnt, size;
} tr[N];
void pushup(int u) {
tr[u].size = tr[lp].size + tr[rp].size + tr[u].cnt;
}
int getnode(int v) {
tr[++idx].k = v;
tr[idx].val = rand();
tr[idx].cnt = 1;
tr[idx].size = 1;
num ++;
return idx;
}
void zig(int &u) {
int t = lp;
lp = tr[t].r;
tr[t].r = u;
u = t;
pushup(lp), pushup(u);
}
void zag(int &u) {
int t = rp;
rp = tr[t].l;
tr[t].l = u;
u = t;
pushup(rp), pushup(u);
}
void build() {
getnode(-INF), getnode(INF);
root = 1, tr[1].r = 2;
pushup(1);
if(tr[1].val < tr[2].val) zag(root);
}
void insert(int &u, int k) {
if (!u) u = getnode(k);
else if (tr[u].k == k) tr[u].cnt ++,num ++;
else if (tr[u].k > k) {
insert(lp, k);
if (tr[lp].val > tr[u].val) zig(u);
} else {
insert(rp, k);
if (tr[rp].val > tr[u].val) zag(u);
}
pushup(u);
}
void remove(int &u, int k) {
if (!u) return ;
else if (tr[u].k == k) {
if (lp || rp) {
if (!rp || tr[lp].val > tr[rp].val) {
zig(u);
remove(rp, k);
} else {
zag(u);
remove(lp, k);
}
} else{
num -= tr[u].cnt , ans+=tr[u].cnt;
u = 0;
}
} else {
if (tr[u].k > k) remove(lp, k);
else remove(rp, k);
}
pushup(u);
}
int getnum(int u, int rank) {
if (!u) return -1;
if (tr[lp].size >= rank) return getnum(lp, rank);
else if (tr[lp].size + tr[u].cnt >= rank) return tr[u].k;
else return getnum(rp, rank - tr[lp].size - tr[u].cnt);
}
void find(int u) {
if (!u) return;
if (st[u]) return;
if (tr[u].k != -INF && tr[u].k != INF) tr[u].k += sum;
find(lp), find(rp);
if (tr[u].k < ang && tr[u].k != -INF && tr[u].k != INF) st[u] = 1 , remove(root, tr[u].k);
pushup(u);
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n >> ang;
build();
char a;
int q;
for (int i = 1; i <= n; i++) {
cin >> a >> q;
if (a == 'I') {
if (q < ang) continue;
insert(root, q);
} else if (a == 'A') {
sum += q;
find(root);
sum = 0;
} else if (a == 'S') {
sum -= q;
find(root);
sum = 0;
} else {
int t = getnum(root, num - q);
if(t == -INF) cout<<-1<<endl;
else cout<<t<<endl;
}
}
cout<<ans<<endl;
return 0;
}