#include <bits/stdc++.h>
using namespace std;
#define cint const int
#define pb push_back
#define mid(l, r) ((l + r) >> 1)
#define left(id) (id << 1)
#define right(id) (id << 1 | 1)
 
const int MAXN = 2e5 + 15;
const int oo   = 1e9;
 
int N, Q;
int A[MAXN];
 
struct query {
    int t, x, a, b;
} q[MAXN];
 
struct ZIP {
    vector<int> v;
 
    void ADD(int x) {
        v.pb(x);
    }
 
    void INIT() {
        sort(v.begin(), v.end());
        v.resize(distance(v.begin(), unique(v.begin(), v.end())));
    }
 
    int get(int x) {
        return lower_bound(v.begin(), v.end(), x) - v.begin() + 1;
    }
} ZIP;
 
struct Seg {
    struct DATA {
        int ma = -oo;
        int L = -oo;
        int R = -oo;
        int S = -oo;
    } it[MAXN * 9];
 
    DATA Merge(DATA a, DATA b) {
        DATA ans;
        ans.S = a.S + b.S;
        if (ans.S < -oo) ans.S = -oo;
        ans.L = max(a.L, a.S + b.L);
        ans.R = max(b.R, a.R + b.S);
        ans.ma = max({a.ma, b.ma, a.R + b.L});
        return ans;
    }
 
    void update(cint &id, cint &l, cint &r, cint &u, cint &v, cint &t) {
        if (l > v || r < u) return;
        if (u <= l && r <= v) {
            if (t == 1) it[id].S = it[id].L = it[id].R = it[id].ma = 1;
            else it[id].L = it[id].R = it[id].S = it[id].ma = -oo;
            return;
        }
 
        int mid = mid(l, r);
        update(left(id), l, mid, u, v, t);
        update(right(id), mid + 1, r, u, v, t);
 
        it[id] = Merge(it[left(id)], it[right(id)]);
    }
 
    DATA get(cint &id, cint &l, cint &r, cint &u, cint &v) {
        if (l > v || r < u) return {-oo, -oo, -oo, -oo};
        if (u <= l && r <= v) return it[id];
 
        int mid = mid(l, r);
        DATA it1 = get(left(id), l, mid, u, v);
        DATA it2 = get(right(id), mid + 1, r, u, v);
 
        return Merge(it1, it2);
    }
} ST;
 
 
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
 
 
    cin >> N >> Q;
    map<int, int> m;
    for (int i = 1; i <= N; i++) {
        cin >> A[i];
        m[A[i]]++;
        ZIP.ADD(A[i]);
        ZIP.ADD(A[i] + 1);
        ZIP.ADD(A[i] - 1);
    }
 
    for (int i = 1; i <= Q; i++) {
        char c;
        cin >> c;
        if (c == '-') {
            q[i].t = 1;
            cin >> q[i].x;
            ZIP.ADD(q[i].x);
            ZIP.ADD(q[i].x + 1);
            ZIP.ADD(q[i].x - 1);
        }
        if (c == '+') {
            q[i].t = 2;
            cin >> q[i].x;
            ZIP.ADD(q[i].x);
            ZIP.ADD(q[i].x + 1);
            ZIP.ADD(q[i].x - 1);
        }
        if (c == '?') {
            q[i].t = 3;
            cin >> q[i].a >> q[i].b;
            ZIP.ADD(q[i].a);
            ZIP.ADD(q[i].a + 1);
            ZIP.ADD(q[i].a - 1);
            ZIP.ADD(q[i].b);
            ZIP.ADD(q[i].b + 1);
            ZIP.ADD(q[i].b - 1);
        }
    }
 
    ZIP.INIT();
    int T = ZIP.v.size();
    for (int i = 1; i <= N; i++) {
        int tmp = ZIP.get(A[i]);
        ST.update(1, 1, T, tmp, tmp, 1);
    }
    for (int i = 1; i <= Q; i++) {
        if (q[i].t == 1) {
            if (m[q[i].x]) {
                m[q[i].x]--;
                if (m[q[i].x] == 0) {
                    int tmp = ZIP.get(q[i].x);
                    ST.update(1, 1, T, tmp, tmp, 2);
                }
            }
        }
        if (q[i].t == 2) {
            m[q[i].x]++;
            int tmp = ZIP.get(q[i].x);
            ST.update(1, 1, T, tmp, tmp, 1);
        }
        if (q[i].t == 3) {
            int tmp1 = ZIP.get(q[i].a - 1);
            int tmp2 = ZIP.get(q[i].a);
            int tmp3 = ZIP.get(q[i].b);
            int tmp4 = ZIP.get(q[i].b + 1);
 
            ST.update(1, 1, T, tmp1, tmp1, 2);
            ST.update(1, 1, T, tmp4, tmp4, 2);
 
            int res = ST.get(1, 1, T, tmp2, tmp3).ma;
 
            if (res == -oo) cout << 0 << '\n';
            else cout << res << '\n';
 
            if (m[q[i].a - 1]) ST.update(1, 1, T, tmp1, tmp1, 1);
            if (m[q[i].b + 1]) ST.update(1, 1, T, tmp4, tmp4, 1);
        }
    }
}
 
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgY2ludCBjb25zdCBpbnQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBtaWQobCwgcikgKChsICsgcikgPj4gMSkKI2RlZmluZSBsZWZ0KGlkKSAoaWQgPDwgMSkKI2RlZmluZSByaWdodChpZCkgKGlkIDw8IDEgfCAxKQoKY29uc3QgaW50IE1BWE4gPSAyZTUgKyAxNTsKY29uc3QgaW50IG9vICAgPSAxZTk7CgppbnQgTiwgUTsKaW50IEFbTUFYTl07CgpzdHJ1Y3QgcXVlcnkgewogICAgaW50IHQsIHgsIGEsIGI7Cn0gcVtNQVhOXTsKCnN0cnVjdCBaSVAgewogICAgdmVjdG9yPGludD4gdjsKCiAgICB2b2lkIEFERChpbnQgeCkgewogICAgICAgIHYucGIoeCk7CiAgICB9CgogICAgdm9pZCBJTklUKCkgewogICAgICAgIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpKTsKICAgICAgICB2LnJlc2l6ZShkaXN0YW5jZSh2LmJlZ2luKCksIHVuaXF1ZSh2LmJlZ2luKCksIHYuZW5kKCkpKSk7CiAgICB9CgogICAgaW50IGdldChpbnQgeCkgewogICAgICAgIHJldHVybiBsb3dlcl9ib3VuZCh2LmJlZ2luKCksIHYuZW5kKCksIHgpIC0gdi5iZWdpbigpICsgMTsKICAgIH0KfSBaSVA7CgpzdHJ1Y3QgU2VnIHsKICAgIHN0cnVjdCBEQVRBIHsKICAgICAgICBpbnQgbWEgPSAtb287CiAgICAgICAgaW50IEwgPSAtb287CiAgICAgICAgaW50IFIgPSAtb287CiAgICAgICAgaW50IFMgPSAtb287CiAgICB9IGl0W01BWE4gKiA5XTsKCiAgICBEQVRBIE1lcmdlKERBVEEgYSwgREFUQSBiKSB7CiAgICAgICAgREFUQSBhbnM7CiAgICAgICAgYW5zLlMgPSBhLlMgKyBiLlM7CiAgICAgICAgaWYgKGFucy5TIDwgLW9vKSBhbnMuUyA9IC1vbzsKICAgICAgICBhbnMuTCA9IG1heChhLkwsIGEuUyArIGIuTCk7CiAgICAgICAgYW5zLlIgPSBtYXgoYi5SLCBhLlIgKyBiLlMpOwogICAgICAgIGFucy5tYSA9IG1heCh7YS5tYSwgYi5tYSwgYS5SICsgYi5MfSk7CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShjaW50ICZpZCwgY2ludCAmbCwgY2ludCAmciwgY2ludCAmdSwgY2ludCAmdiwgY2ludCAmdCkgewogICAgICAgIGlmIChsID4gdiB8fCByIDwgdSkgcmV0dXJuOwogICAgICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KSB7CiAgICAgICAgICAgIGlmICh0ID09IDEpIGl0W2lkXS5TID0gaXRbaWRdLkwgPSBpdFtpZF0uUiA9IGl0W2lkXS5tYSA9IDE7CiAgICAgICAgICAgIGVsc2UgaXRbaWRdLkwgPSBpdFtpZF0uUiA9IGl0W2lkXS5TID0gaXRbaWRdLm1hID0gLW9vOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpbnQgbWlkID0gbWlkKGwsIHIpOwogICAgICAgIHVwZGF0ZShsZWZ0KGlkKSwgbCwgbWlkLCB1LCB2LCB0KTsKICAgICAgICB1cGRhdGUocmlnaHQoaWQpLCBtaWQgKyAxLCByLCB1LCB2LCB0KTsKCiAgICAgICAgaXRbaWRdID0gTWVyZ2UoaXRbbGVmdChpZCldLCBpdFtyaWdodChpZCldKTsKICAgIH0KCiAgICBEQVRBIGdldChjaW50ICZpZCwgY2ludCAmbCwgY2ludCAmciwgY2ludCAmdSwgY2ludCAmdikgewogICAgICAgIGlmIChsID4gdiB8fCByIDwgdSkgcmV0dXJuIHstb28sIC1vbywgLW9vLCAtb299OwogICAgICAgIGlmICh1IDw9IGwgJiYgciA8PSB2KSByZXR1cm4gaXRbaWRdOwoKICAgICAgICBpbnQgbWlkID0gbWlkKGwsIHIpOwogICAgICAgIERBVEEgaXQxID0gZ2V0KGxlZnQoaWQpLCBsLCBtaWQsIHUsIHYpOwogICAgICAgIERBVEEgaXQyID0gZ2V0KHJpZ2h0KGlkKSwgbWlkICsgMSwgciwgdSwgdik7CgogICAgICAgIHJldHVybiBNZXJnZShpdDEsIGl0Mik7CiAgICB9Cn0gU1Q7CgoKc2lnbmVkIG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwoKCiAgICBjaW4gPj4gTiA+PiBROwogICAgbWFwPGludCwgaW50PiBtOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKSB7CiAgICAgICAgY2luID4+IEFbaV07CiAgICAgICAgbVtBW2ldXSsrOwogICAgICAgIFpJUC5BREQoQVtpXSk7CiAgICAgICAgWklQLkFERChBW2ldICsgMSk7CiAgICAgICAgWklQLkFERChBW2ldIC0gMSk7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gUTsgaSsrKSB7CiAgICAgICAgY2hhciBjOwogICAgICAgIGNpbiA+PiBjOwogICAgICAgIGlmIChjID09ICctJykgewogICAgICAgICAgICBxW2ldLnQgPSAxOwogICAgICAgICAgICBjaW4gPj4gcVtpXS54OwogICAgICAgICAgICBaSVAuQUREKHFbaV0ueCk7CiAgICAgICAgICAgIFpJUC5BREQocVtpXS54ICsgMSk7CiAgICAgICAgICAgIFpJUC5BREQocVtpXS54IC0gMSk7CiAgICAgICAgfQogICAgICAgIGlmIChjID09ICcrJykgewogICAgICAgICAgICBxW2ldLnQgPSAyOwogICAgICAgICAgICBjaW4gPj4gcVtpXS54OwogICAgICAgICAgICBaSVAuQUREKHFbaV0ueCk7CiAgICAgICAgICAgIFpJUC5BREQocVtpXS54ICsgMSk7CiAgICAgICAgICAgIFpJUC5BREQocVtpXS54IC0gMSk7CiAgICAgICAgfQogICAgICAgIGlmIChjID09ICc/JykgewogICAgICAgICAgICBxW2ldLnQgPSAzOwogICAgICAgICAgICBjaW4gPj4gcVtpXS5hID4+IHFbaV0uYjsKICAgICAgICAgICAgWklQLkFERChxW2ldLmEpOwogICAgICAgICAgICBaSVAuQUREKHFbaV0uYSArIDEpOwogICAgICAgICAgICBaSVAuQUREKHFbaV0uYSAtIDEpOwogICAgICAgICAgICBaSVAuQUREKHFbaV0uYik7CiAgICAgICAgICAgIFpJUC5BREQocVtpXS5iICsgMSk7CiAgICAgICAgICAgIFpJUC5BREQocVtpXS5iIC0gMSk7CiAgICAgICAgfQogICAgfQoKICAgIFpJUC5JTklUKCk7CiAgICBpbnQgVCA9IFpJUC52LnNpemUoKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewogICAgICAgIGludCB0bXAgPSBaSVAuZ2V0KEFbaV0pOwogICAgICAgIFNULnVwZGF0ZSgxLCAxLCBULCB0bXAsIHRtcCwgMSk7CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBROyBpKyspIHsKICAgICAgICBpZiAocVtpXS50ID09IDEpIHsKICAgICAgICAgICAgaWYgKG1bcVtpXS54XSkgewogICAgICAgICAgICAgICAgbVtxW2ldLnhdLS07CiAgICAgICAgICAgICAgICBpZiAobVtxW2ldLnhdID09IDApIHsKICAgICAgICAgICAgICAgICAgICBpbnQgdG1wID0gWklQLmdldChxW2ldLngpOwogICAgICAgICAgICAgICAgICAgIFNULnVwZGF0ZSgxLCAxLCBULCB0bXAsIHRtcCwgMik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHFbaV0udCA9PSAyKSB7CiAgICAgICAgICAgIG1bcVtpXS54XSsrOwogICAgICAgICAgICBpbnQgdG1wID0gWklQLmdldChxW2ldLngpOwogICAgICAgICAgICBTVC51cGRhdGUoMSwgMSwgVCwgdG1wLCB0bXAsIDEpOwogICAgICAgIH0KICAgICAgICBpZiAocVtpXS50ID09IDMpIHsKICAgICAgICAgICAgaW50IHRtcDEgPSBaSVAuZ2V0KHFbaV0uYSAtIDEpOwogICAgICAgICAgICBpbnQgdG1wMiA9IFpJUC5nZXQocVtpXS5hKTsKICAgICAgICAgICAgaW50IHRtcDMgPSBaSVAuZ2V0KHFbaV0uYik7CiAgICAgICAgICAgIGludCB0bXA0ID0gWklQLmdldChxW2ldLmIgKyAxKTsKCiAgICAgICAgICAgIFNULnVwZGF0ZSgxLCAxLCBULCB0bXAxLCB0bXAxLCAyKTsKICAgICAgICAgICAgU1QudXBkYXRlKDEsIDEsIFQsIHRtcDQsIHRtcDQsIDIpOwoKICAgICAgICAgICAgaW50IHJlcyA9IFNULmdldCgxLCAxLCBULCB0bXAyLCB0bXAzKS5tYTsKCiAgICAgICAgICAgIGlmIChyZXMgPT0gLW9vKSBjb3V0IDw8IDAgPDwgJ1xuJzsKICAgICAgICAgICAgZWxzZSBjb3V0IDw8IHJlcyA8PCAnXG4nOwoKICAgICAgICAgICAgaWYgKG1bcVtpXS5hIC0gMV0pIFNULnVwZGF0ZSgxLCAxLCBULCB0bXAxLCB0bXAxLCAxKTsKICAgICAgICAgICAgaWYgKG1bcVtpXS5iICsgMV0pIFNULnVwZGF0ZSgxLCAxLCBULCB0bXA0LCB0bXA0LCAxKTsKICAgICAgICB9CiAgICB9Cn0K