#include <bits/stdc++.h>
#define MAXN 200005
#define ll long long
using namespace std;
ll tree[MAXN<<2];
ll m,d,past;
ll ls(int x){return x<<1;}
ll rs(int x){return x<<1|1;}
void update(int x){
tree[x]=max(tree[ls(x)]%d,tree[rs(x)]%d);
}
void xg(int x,int k,int L,int R,int l,int r){
if(l>=L && r<=R) tree[x]=k%d;
else{
ll mid=(l+r)>>1;
if(L<=mid) xg(ls(x),k,L,R,l,mid);
if(R>mid) xg(rs(x),k,L,R,mid+1,r);
update(x);
}
}
ll query(int x,int L,int R,int l,int r){
if(l>=L && r<=R) return tree[x];
else{
ll maxn=-(1<<16);
ll mid=(l+r)>>1;
if(L<=mid) maxn=max(maxn,query(ls(x),L,R,l,mid));
if(R>mid) maxn=max(maxn,query(rs(x),L,R,mid+1,r));
return maxn;
}
}
char op;
ll a,L=0;
int main(){
for(ll i=1;i<MAXN<<2;++i) tree[i]=-(1<<16);
cin>>m>>d;
for(ll i=1;i<=m;++i){
cin>>op>>a;
if(op=='Q'){
past=query(1,L-a+1,L,1,m)%d;if(!a) past=0;
cout<<past<<'\n';
}else{
L++;
xg(1,a+past,L,L,1,m);
}
}
return 0;
}