#include #include using namespace std; using namespace atcoder; struct S { long long mx; int argmx; }; S op(S l, S r) { if( l.mx > r.mx ) return l; else return r; } S e() { return S{0, 0}; } int main() { long long N; int M; cin >> N >> M; vector A(M); for( int i = 0; i < M; i++ ) { long long val; cin >> val; A[i] = S{val, i}; } int Q; cin >> Q; segtree st(A); for( int q = 0; q < Q; q++ ) { int T, X; long long Y; cin >> T >> X >> Y; X--; if( T == 1 ) { S s = st.get(X); st.set(X, S{s.mx+Y, X}); }else if( T == 2 ) { S s = st.get(X); st.set(X, S{s.mx-Y, X}); }else { S s = st.all_prod(); cout << s.argmx+1 << endl; } } }