#1 #3 #4 #5 #6 #7 #8 #10 #11 #11 RE
#2 AC
#9 WA
#include <bits/stdc++.h>
using namespace std;
const int N = 6e5 + 10;
#define ll long long
struct tree {
ll sum, tag;
} t[4 * N];
int c, s, r, o, d, n;
void push(int u) {
t[u].sum = max(t[u << 1].sum, t[u << 1 | 1].sum);
}
void addtag(int u, int l, int r, int k) {
t[u].tag += k;
t[u].sum += k;
}
void pushdown(int u, int l, int r) {
int mid = (l + r) >> 1;
addtag(u << 1, l, mid, t[u].tag);
addtag(u << 1 | 1, mid + 1, r, t[u].tag);
t[u].tag = 0; // tag必须清空!!!
}
void modify(int u, int l, int r, int x, int y, int k) {
if (x <= l && r <= y) {
addtag(u, l, r, k);
return;
}
pushdown(u, l, r);
int mid = (l + r) >> 1;
if (x <= mid) modify(u << 1, l, mid, x, y, k);
if (mid < y) modify(u << 1 | 1, mid + 1, r, x, y, k);
push(u);
}
ll query(int u, int l, int r, int x, int y) {
ll ans = 0;
if (x <= l && r <= y) {
return t[u].sum;
}
pushdown(u, l, r);
int mid = (l + r) >> 1;
if (x <= mid) ans = query(u << 1, l, mid, x, y);
if (mid < y) ans = max(ans, query(u << 1 | 1, mid + 1, r, x, y));
return ans;
}
int main() {
cin >> c >> s >> r;
while (r--) {
cin >> o >> d >> n;
modify(1, 1, c, o, d - 1, n);
if (query(1, 1, n, o, d - 1) > s) {
modify(1, 1, c, o, d - 1, -n);
cout << "N\n";
} else cout << "T\n";
}
return 0;
}