#include<bits/stdc++.h>
using namespace std;
int m,p,n,last;
struct _
{
int l,r,v;
}tr[800005];
void build(int u,int l,int r)
{
tr[u].l=l,tr[u].r=r;
if(l==r)return;
int mid=(l+r)>>1;
build(u<<1,l,mid);
build(u<<1|1,mid+1,r);
}
void pushup(int u)
{
tr[u].v=max(tr[u<<1].v,tr[u<<1|1].v);
}
int query(int u,int l,int r)
{
if(l<=tr[u].l&&r>=tr[u].r)return tr[u].v;
int mid=(tr[u].l+tr[u].r)>>1,res=0;
if(l<=mid)res=query(u<<1,l,r);
if(r>=mid)res=max(res,query(u<<1|1,l,r));
return res;
}
void modify(int u,int x,int v)
{
if(tr[u].l==x&&tr[u].r==x)tr[u].v=v;
else
{
int mid=(tr[u].l+tr[u].r)>>1;
if(x<=mid)modify(u<<1,x,v);
else modify(u<<1|1,x,v);
pushup(u);
}
}
int main()
{
scanf("%d%d",&m,&p);
build(1,1,m);
while(m--)
{
char c;
int d;
scanf("%c %d",&c,&d);
if(c=='Q')
{
last=query(1,n-d+1,n);
printf("%d\n",last);
}
else
{
modify(1,n+1,(long long)(last+d)%p);
++n;
}
}
return 0;
}