#include <bits/stdc++.h>
#define maxn 1000010
#define inf 2000000005
using namespace std;
typedef long long ll;
int sum = 0, rt = 0;
int size[maxn];
int v[maxn];
int num[maxn];
int rd[maxn];
int son[maxn][2];
stack<int> s;
int n, m;
template<typename T> inline void read(T &ff) {
T rr = 1;
ff = 0;
register char ch = getchar();
while (!isdigit(ch)) {
if (ch == '-')
rr = -1;
ch = getchar();
}
while (isdigit(ch)) {
ff = (ff << 1) + (ff << 3) + (ch ^ 48);
ch = getchar();
}
ff *= rr;
}
void pushup(int p) {
size[p] = size[son[p][0]] + size[son[p][1]] + num[p];
}
void rotate(int &p, int d) {
int k = son[p][d ^ 1];
son[p][d ^ 1] = son[k][d];
son[k][d] = p;
pushup(p);
pushup(k);
p = k;
}
void ins(int &p, int x) {
if (!p) {
p = ++sum;
size[p] = num[p] = 1;
v[p] = x;
rd[p] = rand();
return;
}
if (v[p] == x) {
num[p] ++ ;
size[p]++;
return;
}
int d = (x > v[p]);
ins(son[p][d], x);
if (rd[p] < rd[son[p][d]])
rotate(p, d ^ 1);
pushup(p);
}
void del(int &p, int x) {
if (!p)
return;
if (x < v[p])
del(son[p][0], x);
else if (x > v[p])
del(son[p][1], x);
else {
if (!son[p][1] && !son[p][0]) {
num[p]--;
size[p]--;
if (num[p] == 0)
p = 0;
} else if (son[p][0] && !son[p][1]) {
rotate(p, 1);
del(son[p][1], x);
} else if (son[p][1] && !son[p][0]) {
rotate(p, 0);
del(son[p][0], x);
} else if (son[p][0] && son[p][1]) {
int d = (rd[son[p][0]] > rd[son[p][1]]);
rotate(p, d);
del(son[p][d], x);
}
}
pushup(p);
}
int pre(int p, int x) {
if (!p)
return -inf;
if (v[p] >= x)
return pre(son[p][0], x);
else
return max(v[p], pre(son[p][1], x));
}
int suc(int p, int x) {
if (!p)
return inf;
if (v[p] <= x)
return suc(son[p][1], x);
else
return min(v[p], suc(son[p][0], x));
}
char ch;
int opt;
bool vis[maxn] = {false};
int main() {
read(n), read(m);
ins(rt, n + 1);
for (register int i = 1; i <= m; i++) {
cin >> ch;
if (ch == 'D') {
read(opt);
s.push(opt);
vis[opt] = true;
ins(rt, opt);
} else if (ch == 'R') {
vis[s.top()] = false;
del(rt, s.top());
s.pop();
} else {
read(opt);
if (vis[opt]) {
cout << 0 << endl;
} else {
cout << suc(rt, opt) - pre(rt, opt) + 1 << endl;
}
}
}
return 0;
}