#include <bits/stdc++.h>
using namespace std;
long long m,d,maxnum,cnt;
long long A[2000001];
long long tree[2000001];
void update(int p,int l,int r,int x,int y,int q){
if(r<x||l>y)return;
else if(x<=l&&y>=r){
tree[p]+=q;
tree[p]%=d;
}
else{
int mid=(l+r)/2;
update(p*2,l,mid,x,y,q);
update(p*2+1,mid+1,r,x,y,q);
tree[p]=max(tree[p*2],tree[p*2+1])%d;
}
}
long long find(int p,int l,int r,int x,int y){
if(r<x||l>y)return -1e9;
else if(x<=l&&y>=r){
return tree[p]%d;
}
else{
int mid=(l+r)/2;
return max(find(p*2,l,mid,x,y),find(p*2+1,mid+1,r,x,y))%d;
}
}
int main(){
cin>>m>>d;
cnt=0;
maxnum=0;
for(int i=1;i<=40000;i++){
tree[i]=-1e9;
}
for(int i=1;i<=m;i++){
char tmp;
int tmp2;
cin>>tmp;
if(tmp=='Q'){
cin>>tmp2;
maxnum=find(1,1,40000,cnt-tmp2+1,cnt);
cout<<maxnum%d<<endl;
}else{
cin>>tmp2;
++cnt;
update(1,1,40000,cnt,cnt,maxnum+tmp2);
}
}
}