#include<iostream>
#define LL long long
#define max(a, b) a > b ? a : b
using namespace std;
const int maxn = 2 * 1e5 + 10;
struct Node{
int l, r;
LL maxx;
}node[4 * maxn];
void build(int l, int r, int num){
node[num].l = l;
node[num].r = r;
node[num].maxx = 0;
if(l == r) return;
int mid = ((l + r) >> 1);
build(l, mid, num * 2);
build(mid + 1, r, num * 2 + 1);
return;
}
void charu(int a, int x, int num){
node[num].maxx = max(node[num].maxx, a);
if(node[num].l == node[num].r) return;
int mid = ((node[num].l = node[num].r) >> 1);
if(x <= mid) charu(a, x, num * 2);
else charu(a, x, num * 2 + 1);
}
LL chaxun(int l, int r, int num){
int mid = ((node[num].l + node[num].r) >> 1);
LL a = 0;
if(l <= node[num].l && r >= node[num].r) return node[num].maxx;
if(l <= mid) a = max(a, chaxun(l, r, num * 2));
if(r > mid) a = max(a, chaxun(l, r, num * 2 + 1));
return a;
}
int main(){
int M, D, cnt = 0;
LL last = 0;
cin >> M >> D;
build(0, D, 1);
while(M--){
char c;
LL a;
cin >> c >> a;
if(c == 'Q'){
last = chaxun(cnt - a, cnt - 1, 1);
cout << last;
}
if(c == 'A'){
cout << (a + last) % D;
charu((a + last) % D, cnt, 1);
cnt++;
}
cout << endl;
}
return 0;
}