#include <bits/stdc++.h>
#define N 1000005
using namespace std;
int tree[4 * N];
int flag[4 * N];
int array[N];
int m, d, t = 0;
void ud(int node, int L, int R, int x, int y, int k) {
int ls = node << 1;
int rs = node << 1 | 1;
int mid = L + R >> 1;
if (x <= L && R <= y) {
tree[node] += k;
return;
}
if (x <= mid) ud(ls, L, mid, x, y, k);
if (y > mid) ud(rs, mid + 1, R, x, y, k);
tree[node] = max(tree[ls], tree[rs]);
}
int query(int node, int L, int R, int x, int y) {
int ls = node << 1;
int rs = node << 1 | 1;
int mid = L + R >> 1;
if (L == R) {
return tree[node];
}
int res = -2147483648;
if (x <= mid) res = max(res, query(ls, L, mid, x, y));
if (y > mid) res = max(res, query(rs, mid + 1, R, x, y));
return res;
}
bool f = 1;
int ans;
int num;
int main() {
scanf("%d%d", &m, &d);
for (int i = 1; i <= m; i++) {
char a;
int k;
cin >> a;
if (a == 'A') {
cin >> k;
k = (k + t) % d;
num++;
ud(1, 1, m, num, num, k);
} else if (a == 'Q') {
cin >> k;
t = query(1, 1, m, num - k + 1, num);
cout << t << endl;
}
}
return 0;
}