#include #include #include using namespace std; using namespace atcoder; struct S{ int l, r, lr; }; S op(S l, S r){ return{ l.l-min(l.l, r.r)+r.l, l.r+r.r-min(l.l, r.r), l.lr+r.lr+min(l.l, r.r) }; } S e(){ return{ 0, 0, 0 }; } int main(){ int N, Q; string T; cin >> N >> Q >> T; segtree seg(N); for (int i = 0; i < N; i++){ seg.set(i, S{T[i] == '(', T[i] == ')', 0}); } while (Q--){ int t; cin >> t; if (t == 1){ int i, x; cin >> i >> x; seg.set(i, S{x == 1, x == 2, 0}); } else{ int l, r; cin >> l >> r; cout << seg.prod(l-1, r).lr << endl; } } }