P1198
record
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5+1;
int n, d, tree[N << 2];
int lc(int &p) { return p << 1; }
int rc(int &p) { return p << 1 | 1; }
void push_up(int &p) { tree[p] = max(tree[lc(p)], tree[rc(p)]) % d; }
void update(int P, int p, int pl, int pr, int k) {
if (pl == pr) { tree[p] = k; return ; }
int mid = (pl + pr) >> 1;
if (P <= mid) update(P, lc(p), pl, mid, k);
if (mid < P) update(P, rc(p), mid + 1, pr, k);
push_up(p);
}
int query(int L, int R, int p, int pl, int pr) {
if (L <= pl && pr <= R) return tree[p];
long long res = -1e9, mid = (pl + pr) >> 1;
if (L <= mid) res = max(query(L, R, lc(p), pl, mid), res);
if (mid < R) res = max(query(L, R, rc(p), mid + 1, pr), res);
return res % d;
}
signed main()
{
scanf("%lld %lld", &n, &d);
char c; long long x, t = 0, cur = 0;
while (n--) {
cin >> c; scanf("%lld", &x);
if (c == 'A') {
x = (x + t) % d;
update(cur + 1, 1, 1, n, x);
cur++;
}
else {
if (x == 0) t = 0;
else t = query(cur - x + 1, cur, 1, 1, n) % d;
printf("%lld\n", t);
}
}
return 0;
}