#include<bits/stdc++.h>
#define N 200010
using namespace std;
int cnt;
inline int lch(int p){return p<<1;}
inline int rch(int p){return p<<1|1;}
int tree[N<<2];
inline int pushup(int p){
tree[p]=max(tree[lch(p)],tree[rch(p)]);
}
inline void pushdown(int p,int l,int r,int ck,int v){
int mid = (l+r)>>1;
if(l==r){
tree[p]=v;
return ;
}
if(ck<=mid) pushdown(lch(p),l,mid,ck,v);
else pushdown(rch(p),mid+1,r,ck,v);
pushup(p);
}
inline int query(int p,int l,int r,int L,int R){
if(L<=l&&r<=R) return tree[p];
int mid = (l+r)>>1;
int ans = 0;
if(L<=mid){
return query(lch(p),l,mid,L,R);
}
if(mid<R){
return query(rch(p),mid+1,r,L,R);
}
}
int main(){
int M,D,pr=0;
scanf("%d%d",&M,&D);
while(M--){
char s;
int n;
cin >> s >> n;
if(s=='A'){
cnt++;
pushdown(1,1,M,cnt,(n+pr)%D);
}
else{
pr = query(1,1,M,cnt-n+1,cnt);
printf("%d\n",pr);
}
}
return 0;
}