#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll INF=0x3f3f3f3f3f3f3f;
using namespace std;
ll c,s,r;
struct Point{
ll L,R,minn,lz;
}po[1000005];
void build(ll p,ll x,ll y){
po[p]={x,y,s,0};
if(x==y)return;
ll mid=(x+y)>>1;
build(p<<1,x,mid);
build(p<<1|1,mid+1,y);
}
void uplz(ll p,ll k){
po[p].minn+=k;
po[p].lz+=k;
}
void pushdown(ll p){
if(po[p].lz!=0){
uplz(p<<1,po[p].lz);
uplz(p<<1|1,po[p].lz);
po[p].lz==0;
}
}
void modify(ll p,ll x,ll y,ll k){
if(po[p].R<x||po[p].L>y)return;
if(po[p].L>=x&&po[p].R<=y)return uplz(p,k);
pushdown(p);
modify(p<<1,x,y,k);
modify(p<<1|1,x,y,k);
po[p].minn=min(po[p<<1].minn,po[p<<1|1].minn);
}
ll query(ll p,ll x,ll y){
if(po[p].R<x||po[p].L>y)return INF;
if(po[p].L>=x&&po[p].R<=y)return po[p].minn;
pushdown(p);
ll res=INF;
res=min(res,query(p<<1,x,y));
res=min(res,query(p<<1|1,x,y));
return res;
}
signed main(){
ios::sync_with_stdio(false);
cin>>c>>s>>r;
build(1,1,c);
while(r--){
ll x,y,w;
cin>>x>>y>>w;
if(query(1,x,y-1)>=w){
cout<<"T"<<endl;
modify(1,x,y-1,-w);
continue;
}
cout<<"N"<<endl;
}
return 0;
}