全WA
#include<bits/stdc++.h>
#define int long long
const int maxm=2e5+10;
int a[maxm];
int cnt;
struct tree{
int l,r,max,laz;
}s[maxm<<2];
void push_up(int p){
s[p].max=std::max(s[p*2].max,s[p*2+1].max);
}
void build(int l,int r,int p){
s[p].l=l,s[p].r=r;
if(l==r){
s[p].max=-0x3f3f3f3f;
return ;
}
int mid=(l+r)>>1;
build(l,mid,p*2);
build(mid+1,r,p*2+1);
push_up(p);
}
void upd(int d,int p,int di){
int l=s[p].l,r=s[p].r;
if(l==r){
s[p].max=std::max(s[p].max,d);
return ;
}
int mid=(l+r)>>1;
if(mid>=di) upd(d,p*2,di);
else upd(d,p*2+1,di);
push_up(p);
return ;
}
int query(int L,int R,int p){
int l=s[p].l,r=s[p].r;
if(l>=L&&r<=R) return s[p].max;
int mid=(l+r)>>1;
int ans=-0x3f3f3f3f;
if(mid>=L) ans=std::max(ans,query(L,mid,p*2));
if(R>mid) ans=std::max(ans,query(mid+1,R,p*2+1));
return ans;
}
signed main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int m,d;
std::cin>>m>>d;
int las=0;
build(1,maxm,1);
while(m--){
char s;
std::cin>>s;
if(s=='Q'){
int l;
std::cin>>l;
las=query(cnt-l+1,cnt,1);
std::cout<<las<<'\n';
}else {
int n;
std::cin>>n;
cnt++;
upd((las+(n%d+d)%d)%d,1,cnt);
}
}
return 0;
}