//做这道题我知道了按规范行事的重要
#include<iostream>
using namespace std;
int main()
{
int t,c,n,m,i,time,ln[2],lt[2],ont,bt,temp,llt;
bool bleft,tleft;
char ch[10];
cin>>c;
while(c--)
{
ln[0]=ln[1]=lt[0]=lt[1]=0,bleft=1,ont=0,bt=0;
cin>>n>>t>>m;
for(i=0;i<m;i++)
{
scanf("%d%s",&time,ch);
if(ch[0]=='l')
tleft=1;
else
tleft=0;
if(bt+ont<=time)
{
bleft=(bleft+ont/t)%2;
bt=time;
if(bleft==tleft){
ln[tleft]=0;
ont=t;
}
else{
ln[tleft]=1;
ont=2*t;
}
ln[(tleft+1)%2]=0;
lt[0]=lt[1]=0;
printf("%d/n",bt+ont);
}
else
{
llt=0;
if(time>=bt+t){
temp=(time-bt)/t;
bt+=temp*t;
ont-=temp*t;
bleft=(bleft+temp)%2;
if(temp%2)//难点
lt[bleft]--;
lt[0]-=temp/2;
lt[1]-=temp/2;
lt[bleft]-=temp%2;
lt[bleft]++;//问题所在
if(lt[0]<0){
ln[0]=0;
lt[0]=0;
}
if(lt[1]<0)
{
ln[1]=0;
lt[1]=0;
}
}
if(time>bt)
llt=2*t;
ln[tleft]++;
if(bleft==tleft){
cout<<bt+2*t*lt[tleft]+t+llt<<endl;
if(2*t*lt[tleft]+t+llt>ont)
ont=2*t*lt[tleft]+t+llt;
}
else{
cout<<bt+2*t+2*t*lt[tleft]<<endl;
if(2*t*lt[tleft]+2*t>ont)
ont=2*t*lt[tleft]+2*t;
}
if(ln[tleft]==n){
ln[tleft]=0;
lt[tleft]++;
}
}
}
if(c)
printf("/n");
}
return 0;
}