#include<bits/stdc++.h>
using namespace std;
const int N = 11000000;
int m, d, cnt, num, ans[N], tree[4*N];
void build_tree(int node, int start, int end, int x){
if(start == end && start == x){
tree[node] = ans[start];
return ;
}
int mid = (start + end) / 2;
int left_node = 2 * node;
int right_node = 2 * node + 1;
if(x <= mid){
build_tree(left_node, start, mid, x);
} else {
build_tree(right_node, mid + 1, end, x);
}
tree[node] = max(tree[left_node], tree[right_node]);
}
int query(int node, int start, int end, int L, int R){
if(L == start && R == end){
return tree[node];
}
int mid = (start + end) / 2;
int left_node = 2 * node;
int right_node = 2 * node + 1;
if(R <= mid){
return query(left_node, start, mid, L, R);
}
if(L > mid){
return query(right_node, mid + 1, end, L, R);
}
return max(query(left_node, start, mid, L, mid), query(right_node, mid + 1, end, mid + 1, R));
}
int main(){
char op;
cin >> m >> d;
while(m--){
int x;
cin >> op;
if(op == 'A'){
cin >> x;
x += num;
x %= d;
ans[++cnt] = x;
build_tree(1, 1, m, cnt);
} else {
cin >> x;
num = query(1, 1, m, cnt - x + 1, cnt );
cout << num << endl;
}
}
return 0;
}