#include #include using namespace std; struct S{ int cl=0,cr=0; int cnt=0; }; S op(S a,S b){ a.cnt+=b.cnt; int p=min(a.cl,b.cr); a.cnt+=p; a.cl+=b.cl-p; a.cr+=b.cr-p; return a; } S e(){return S{0,0,0};} int main(){ int n,q; string s; cin>>n>>q>>s; atcoder::segtree seg(n); auto f=[&](char c){ if (c=='(') return S{1,0,0}; if (c==')') return S{0,1,0}; return e(); }; for (int i=0;i>t; if (t==1){ int x,t; cin>>x>>t; x--; seg.set(x,f(s[x]=(t==1?'(':')'))); } if (t==2){ int l,r; cin>>l>>r; l--; cout<