#include<iostream>
#include<cstring>
using namespace std;
#define int long long
inline int ls(int p){return p<<1;}
inline int rs(int p){return p<<1|1;}
const int N=2*1e5+5,F=-1e15;
int D;
int M[N*4+5];
int m,cnt,lth;
void build(){
for(int i=1;i<=m;i++)
M[i]=F;
}
int query(int k,int l,int r,int x,int y){
if(x<=l&&r<=y)return M[k];
int a=F,b=F,mid=(l+r)>>1;
if(x<=mid)a=query(k*2,1,mid,x,y);
if(y>mid)b=query(k*2+1,mid+1,r,x,y);
return max(a,b);
}
void modify(int k,int l,int r,int x,int v){
if(l==r){
M[k]=v;
return;
}
int mid=(l+r)>>1;
if(x<=mid)modify(k*2,1,mid,x,v);
if(x>mid) modify(k*2+1,mid+1,r,x,v);
M[k]=max(M[k*2],M[k*2+1])%D;
}
signed main(){
cin>>m>>D;
build();
for(int i=1;i<=m;i++){
char c;int A;
cin>>c>>A;
if(c=='Q'){
cnt=query(1,1,m,lth-A+1,m)%D;
cout<<cnt<<endl;
}else{
lth++;
modify(1,1,m,lth,(A+cnt)%D);
}
}
return 0;
}