#include<bits/stdc++.h>
#define LL long long
#define ULL unsigned long long
using namespace std;
int sum[800005];
LL tmp,num,M,D,x;
inline void update(int k,int l,int r,int p,int v)
{
if(l == r && r == p){sum[k] = v;return;}
LL mid = (l+r)/2;
if(mid >= p) update(k*2,l,mid,p,v);
if(mid < p) update(k*2+1,mid+1,r,p,v);
sum[k] = max(sum[k*2],sum[k*2+1])%D;
}
inline LL query(int k,int l,int r,int x,int y)
{
if(x <= l && r <= y) return sum[k];
LL mid = (l+r)/2,a = -1e9;
if(mid >= x) a = query(k*2,l,mid,x,y);
if(mid < y) a = max(a,query(k*2+1,mid+1,r,x,y));
return a;
}
int main(int argc,char *argv[])
{
cin>>M>>D;
while(M--)
{
char op;cin>>op;
if(op == 'Q') {cin>>x;tmp = query(1,1,M,num-x+1,num);printf("%lld\n",tmp);}
else {cin>>x;update(1,1,M,num+1,(x+tmp)%D);++num;}
}
#ifndef ONLINE_JUDGE
printf("Time used = %.0lfms\n",((double)clock()/(double)CLOCKS_PER_SEC) * 1000.0);
#endif
return 0;exit(0);
}