#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf (1<<63)
inline ll read(){
ll x=0;
char c=getchar();
while(c>'9'||c<'0'){
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^'0');
c=getchar();
}
return x;
}
char op;
ll y;
ll td;
int tot;
//ll a[200001];
ll t[200001<<2];
int m,d;
void pushup(int k){
t[k]=max(t[k<<1],t[k<<1|1]);
}
void update(int k,int l ,int r,ll val,int x){
if(l==r){
t[k]=val;
t[k]%=d;
return ;
}else{
int mid=((l+r)>>1);
if(x<=mid){
update(k<<1,l,mid,val,x);
}else{
update(k<<1|1,mid+1,r,val,x);
}
pushup(k);
}
}
ll query(int k,int l,int r,int L,int R){
if(L<=l&&r<=R){
return t[k];
}else{
ll res=-inf;
int mid=((l+r)>>1);
if(L<=mid){
res=max(res,query(k<<1,l,mid,L,R));
}
if(R>mid){
res=max(res,query(k<<1|1,mid+1,r,L,R));
}
return res;
}
}
int main(){
m=read();
d=read();
for(int i=1;i<=m;i++){
cin>>op;
y=read();
if(op=='A'){
update(1,1,m,(y+td)%d,++tot);
}else{
if(y==0)td=0;
else td=query(1,1,m,tot-y+1,tot)%d;
printf("%lld\n",td);
}
}
return 0;
}