// https://szkopul.edu.pl/problemset/problem/ShrCwRqlzMKLBb269GkVbWg_/site/?key=statement
#include <bits/stdc++.h>
using namespace std;
#define int long long
constexpr int sizik = 1000 * 1001, INF = 1e9 + 7;
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef long long ll;
typedef vec<vec<int>> _kra;
typedef ar<int, 4 * sizik> DD;
DD d, d1;
struct DrzewoPrzedzialowe {
int ll = 1;
int op(const int& a, const int& b) { return a + b; }
int na_przedziale(int o, int x, int y, int A, int B, DD& local_d) {
if (A <= x && y <= B) {
return local_d[o];
} else if (B < x || y < A) {
return 0;
} else {
return op(na_przedziale(o * 2, x, (x + y) / 2, A, B, local_d), na_przedziale(o * 2 + 1, (x + y) / 2 + 1, y, A, B, local_d));
}
}
int na_przedziale(int A, int B, DD& local_d) {
if (B < A) return 0;
if (A == B) return local_d[A + ll - 1];
return na_przedziale(1, 1, ll, A, B, local_d);
}
void akt(int v, const int& a, DD& local_d) {
v += this->ll - 1;
local_d[v] = a;
while (v > 1) {
v /= 2;
local_d[v] = op(local_d[2 * v], local_d[2 * v + 1]);
}
}
DrzewoPrzedzialowe(int n, DD& local_d) {
while (ll < n) {
ll *= 2;
}
for (int i = 0; i <= 2 * ll; i++) {
local_d[i] = 0;
}
for (int i = 0; i < n; i++) {
local_d[i + ll] = 0;
}
}
void wypisz(const DD& local_d) {}
};
ar<int, 3> zapyt[sizik];
int cier[sizik], bigger;
void solve() {
int n, m;
std::cin >> n >> m;
std::set<int> ss;
ss.insert(INF);
ss.insert(0);
for (int i = 0; i < m; i++) {
char a;
int b, c;
std::cin >> a >> zapyt[i + 1][1] >> zapyt[i + 1][2];
int d = (a == 'U') ? 1 : 2;
zapyt[i + 1][0] = d;
if (a == 'Z') {
ss.insert(zapyt[i + 1][2]);
}
}
std::map<int, int> mp;
int _o = 1;
for (const auto& a : ss) {
mp[a] = _o++;
}
DrzewoPrzedzialowe dd(_o, d), dd1(_o, d1);
dd1.akt(1, n, d1);
for (int i = 1; i <= m; i++) {
const auto& [t, a, b] = zapyt[i];
if (t == 1) {
// a-ty kierowca może b km
int val = *ss.lower_bound(cier[a]), val1 = *ss.lower_bound(b);
int index = mp[val], index1 = mp[val1];
dd.akt(index, dd.na_przedziale(index, index, d) - cier[a], d);
dd1.akt(index, dd1.na_przedziale(index, index, d1) - 1, d1);
if (cier[a] == 0 && b != 0) {
bigger++;
} else if (cier[a] != 0 && b == 0) {
bigger--;
}
cier[a] = b;
dd.akt(index1, dd.na_przedziale(index1, index1, d) + b, d);
dd1.akt(index1, dd1.na_przedziale(index1, index1, d1) + 1, d1);
} else if (t == 2) {
auto c = ss.upper_bound(b);
c--;
int index = mp[*c];
int su1 = dd.na_przedziale(2, index, d);
int su2 = (bigger - dd1.na_przedziale(2, index, d1)) * b;
int xs = su1 + su2;
if (xs >= a * b) {
std::cout << "TAK\n";
} else {
std::cout << "NIE\n";
}
}
}
}
int32_t main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}