#include <bits/stdc++.h>
using namespace std;
#define taskname "llist"
int main() {
if (fopen(taskname".inp", "r")) {
freopen(taskname".inp", "r", stdin);
freopen(taskname".out", "w", stdout);
}
cin.tie(0)->sync_with_stdio(0);
int n, m; cin >> n >> m;
vector<int> L(n + 2), R(n + 2);
for (int i = 1; i <= n; i++) {
L[i] = i - 1;
R[i] = i + 1;
}
function<void(int, int, int)> modify = [&](int e, int x, int y) {
R[L[x]] = R[x];
L[R[x]] = L[x];
if (!e) {
R[L[y]] = x;
L[x] = L[y];
R[x] = y;
L[y] = x;
}
else {
L[R[y]] = x;
R[x] = R[y];
L[x] = y;
R[y] = x;
}
};
for (int i = 0; i < m; i++) {
char c; int x, y;
cin >> c >> x >> y;
modify(c - 'A', x, y);
}
vector<int> a;
for (int i = 1; i <= n; i++) {
if (L[i] == 0) {
a.push_back(i);
break;
}
}
while (R[a.back()] != n + 1) {
a.push_back(R[a.back()]);
}
vector<int> b, f(n);
for (int i = 0; i < n; i++) {
f[i] = lower_bound(b.begin(), b.end(), a[i]) - b.begin();
if (f[i] >= b.size()) {
b.push_back(0);
}
b[f[i]] = a[i];
}
int x = b.size();
vector<int> c;
for (int i = n - 1; ~i; i--) {
if (f[i] == x - 1) {
c.push_back(a[i]);
x--;
}
}
c.push_back(0);
reverse(c.begin(), c.end());
vector<array<int, 3>> ans;
for (int i = 0; i < c.size() - 1; i++) {
for (int j = c[i + 1] - 1; j > c[i]; j--) {
ans.push_back({0, j, j + 1});
}
}
for (int j = c.back() + 1; j <= n; j++) {
ans.push_back({1, j, j - 1});
}
cout << ans.size() << "\n";
for (auto &x: ans) {
cout << (x[0] ? 'B': 'A') << " " << x[1] << " " << x[2] << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIHRhc2tuYW1lICJsbGlzdCIKCmludCBtYWluKCkgewogIGlmIChmb3Blbih0YXNrbmFtZSIuaW5wIiwgInIiKSkgewogICAgZnJlb3Blbih0YXNrbmFtZSIuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKHRhc2tuYW1lIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgfQogIAogIGNpbi50aWUoMCktPnN5bmNfd2l0aF9zdGRpbygwKTsKCiAgaW50IG4sIG07IGNpbiA+PiBuID4+IG07CiAgdmVjdG9yPGludD4gTChuICsgMiksIFIobiArIDIpOwogIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgTFtpXSA9IGkgLSAxOwogICAgUltpXSA9IGkgKyAxOwogIH0KICBmdW5jdGlvbjx2b2lkKGludCwgaW50LCBpbnQpPiBtb2RpZnkgPSBbJl0oaW50IGUsIGludCB4LCBpbnQgeSkgewogICAgUltMW3hdXSA9IFJbeF07CiAgICBMW1JbeF1dID0gTFt4XTsKICAgIGlmICghZSkgewogICAgICBSW0xbeV1dID0geDsKICAgICAgTFt4XSA9IExbeV07CiAgICAgIFJbeF0gPSB5OwogICAgICBMW3ldID0geDsKICAgIH0KICAgIGVsc2UgewogICAgICBMW1JbeV1dID0geDsKICAgICAgUlt4XSA9IFJbeV07CiAgICAgIExbeF0gPSB5OwogICAgICBSW3ldID0geDsKICAgIH0KICB9OwogIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKSB7CiAgICBjaGFyIGM7IGludCB4LCB5OwogICAgY2luID4+IGMgPj4geCA+PiB5OwogICAgbW9kaWZ5KGMgLSAnQScsIHgsIHkpOwogIH0KCiAgdmVjdG9yPGludD4gYTsKICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgIGlmIChMW2ldID09IDApIHsKICAgICAgYS5wdXNoX2JhY2soaSk7CiAgICAgIGJyZWFrOwogICAgfQogIH0KICB3aGlsZSAoUlthLmJhY2soKV0gIT0gbiArIDEpIHsKICAgIGEucHVzaF9iYWNrKFJbYS5iYWNrKCldKTsKICB9CgogIHZlY3RvcjxpbnQ+IGIsIGYobik7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgIGZbaV0gPSBsb3dlcl9ib3VuZChiLmJlZ2luKCksIGIuZW5kKCksIGFbaV0pIC0gYi5iZWdpbigpOwogICAgaWYgKGZbaV0gPj0gYi5zaXplKCkpIHsKICAgICAgYi5wdXNoX2JhY2soMCk7CiAgICB9CiAgICBiW2ZbaV1dID0gYVtpXTsKICB9CgogIGludCB4ID0gYi5zaXplKCk7CiAgdmVjdG9yPGludD4gYzsKICBmb3IgKGludCBpID0gbiAtIDE7IH5pOyBpLS0pIHsKICAgIGlmIChmW2ldID09IHggLSAxKSB7CiAgICAgIGMucHVzaF9iYWNrKGFbaV0pOwogICAgICB4LS07CiAgICB9CiAgfQogIGMucHVzaF9iYWNrKDApOwogIHJldmVyc2UoYy5iZWdpbigpLCBjLmVuZCgpKTsKICB2ZWN0b3I8YXJyYXk8aW50LCAzPj4gYW5zOwogIGZvciAoaW50IGkgPSAwOyBpIDwgYy5zaXplKCkgLSAxOyBpKyspIHsKICAgIGZvciAoaW50IGogPSBjW2kgKyAxXSAtIDE7IGogPiBjW2ldOyBqLS0pIHsKICAgICAgYW5zLnB1c2hfYmFjayh7MCwgaiwgaiArIDF9KTsKICAgIH0KICB9CiAgZm9yIChpbnQgaiA9IGMuYmFjaygpICsgMTsgaiA8PSBuOyBqKyspIHsKICAgIGFucy5wdXNoX2JhY2soezEsIGosIGogLSAxfSk7CiAgfQoKICBjb3V0IDw8IGFucy5zaXplKCkgPDwgIlxuIjsKICBmb3IgKGF1dG8gJng6IGFucykgewogICAgY291dCA8PCAoeFswXSA/ICdCJzogJ0EnKSA8PCAiICIgPDwgeFsxXSA8PCAiICIgPDwgeFsyXSA8PCAiXG4iOwogIH0KCiAgcmV0dXJuIDA7Cn0=