#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
using ll = long long; const ll inf = LONG_LONG_MAX;
vector<ll> segtree;
void update(ll pos, ll l, ll r, ll to, ll val){
if(l==r){
segtree[pos]=val;
return;
}
ll mid=(l+r)/2;
if(to<=mid) update(2*pos+1, l, mid, to, val);
else update(2*pos+2, mid+1, r, to, val);
segtree[pos]=min(segtree[2*pos+1], segtree[2*pos+2]);
}
ll query(ll pos, ll l, ll r, ll bal, ll jobb){
if(l>=bal&&r<=jobb){
return segtree[pos];
}
ll mid=(l+r)/2, res=inf;
// Ha jovobeli Linh olvassa ezt, emlekezzen a regi Linh majdnem tokeletessegere.
if(mid>=bal) res=query(2*pos+1, l, mid, bal, jobb);
if(mid<jobb) res=min(res, query(2*pos+2, mid+1, r, bal, jobb));
return res;
}
int main() {
int n, q; cin>>n>>q;
segtree.resize(n*4, inf);
while(q--){
char a; int b, c; cin>>a>>b>>c;
if(a=='M'){
update(0, 1, n, c, b);
}
else{
swap(b, c); int l=b, r=n;
while(l<r){
ll mid=(l+r)/2;
//cerr<<c<<" "<<l<<" "<<r<<" "<<query(0, 1, n, l, mid)<<endl;
if(query(0, 1, n, l, mid)<=c) r=mid;
else l=mid+1;
}
//cerr<<l<<" "<<r<<endl;
//cerr<<endl;
ll p=query(0, 1, n, l, l);
//cerr<<c<<" "<<query(0, 1, n, l, l)<<" "<<l<<endl;
if(p>c) cout<<-1<<"\n";
else cout<<l<<"\n";
}
}
}