#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; long long n, q; vector BIT(100010); void add(long long i, long long x) { while (i <= n) { BIT[i] += x; i += i & -i; } } long long csum(long long i) { long long count = 0; while (i > 0) { count += BIT[i]; i -= i & -i; } return count; } long long sum(long long l, long long r) { return csum(r) - csum(l - 1); } set st; int main(){ cin >> n >> q; st.insert(0); for (int i = 1; i <= n; i++) { long long a; cin >> a; add(i, a); st.insert(i); } for (int i = 0; i < q; i++) { long long query, x; cin >> query >> x; if (query == 1) { st.erase(x); } else if (query == 2) { st.insert(x); } else if (query == 3) { add(x, 1); } else { auto itr = st.lower_bound(x); auto itr1 = itr--; cout << sum((*itr)+1, *itr1) << endl; } } }