#include<iostream>
using namespace std;
typedef long long ll;
int n,m,d,t,a[200005],ma[800005];
ll lc(ll p){return p<<1;}
ll rc(ll p){return p<<1|1;}
void pushUp(ll p){
ma[p]=max(ma[lc(p)],ma[rc(p)]);
}
void update(ll p,ll l,ll r,ll ql,ll qr,ll b){
if(ql<=l&&r<=qr){
a[l]=b;
ma[p]=a[l];
return ;
}
ll mid=(l+r)/2;
if(ql<=mid) update(lc(p),l,mid,ql,qr,b);
if(qr>mid) update(rc(p),mid+1,r,ql,qr,b);
pushUp(p);
}
ll query(ll p,ll l,ll r,ll ql,ll qr){
if(l>=ql&&r<=qr){
return ma[p];
}
ll mid=(l+r)/2,ans=0;
if(ql<=mid) ans=query(lc(p),l,mid,ql,qr);
if(qr>mid) ans=max(ans,query(rc(p),mid+1,r,ql,qr));
return ans;
}
int main(){
cin>>m>>d;
n=0;
while(m--){
char op;
ll x;
cin>>op>>x;
if(op=='A'){
n++;
update(1,1,m,n,n,(x+t)%d);
}else{
t=query(1,1,m,n-x+1,n);
printf("%lld\n",t);
}
}
return 0;
}