#include <bits/stdc++.h>
using namespace std;
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define pb push_back
#define fst first
#define snd second
template <typename t>
using vv = vector<t>;
template <typename a, typename b>
using pp = pair<a, b>;
typedef long long ll;
typedef double db;
const int mod = 1e9 + 7;
vv<int> st;
int s = 1;
int query(int x, int y, int l, int r, int node, int val) {
if (st[node] > val) return -1;
if (x > r || y < l) return -1;
if (l == r) return l;
int m = (l + r) / 2;
int a1 = query(x, y, l, m, node * 2, val);
if (a1 != -1) return a1;
return query(x, y, m + 1, r, node * 2 + 1, val);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, q;
cin >> n >> q;
while (s < n) s <<= 1;
st.assign(s << 1, INT_MAX);
while (q--) {
char c;
int i, val;
cin >> c >> val >> i;
if (c == 'M') {
int node = s + i - 1;
st[node] = val;
while (node >>= 1) st[node] = min(st[node * 2], st[node * 2 + 1]);
}
else cout << query(i, s, 1, s, 1, val) << "\n";
}
}