#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 10;
long long m, d, n, t, num_cnt;
char ch;
struct {
long long l, r, maxx;
} tree[N >> 2];
void built(long long i, long long l, long long r) {
tree[i].l = l;
tree[i].r = r;
if (l == r) return;
long long mid = (l + r) / 2;
built(i * 2, l, mid);
built(i * 2 + 1, mid + 1, r);
}
void add(long long i, long long j, long long k) {
tree[i].maxx = max(k, tree[i].maxx);
if (tree[i].l == tree[i].r) return;
long long mid = (tree[i].l + tree[i].r) / 2;
if (j <= mid) add(i * 2, j, k);
if (j > mid) add(i * 2 + 1, j, k);
}
long long get_max(long long i, long long l, long long r) {
if (l <= tree[i].l && tree[i].r <= r ) return tree[i].maxx;
if (tree[i * 2].r >= l)return get_max(i * 2, l, r);
if (tree[i * 2 + 1].l <= r) return get_max(i * 2 + 1, l, r);
}
int main() {
cin >> m >> d;
built(1, 1, m);
for (long long i = 1; i <= m; i++) {
cin >> ch >> n;
if (ch == 'A') {
add(1, ++num_cnt, (n % d + t % d) % d);
} else {
t = get_max(1, num_cnt - n + 1, num_cnt);
cout << t << endl;
}
}
return 0;
}