struct T{ ll vmin; ll vout; }; T segtree_ph_func(T a,T b){ T r; r.vmin=min(a.vmin,a.vout+b.vmin); r.vout=a.vout+b.vout; return r; } { segtree_pht; ll@q,@L; t.malloc(L+1,1); rep(i,L+1)t[i]=T{0,0}; t.build(); rep(q){ ll@(a,l,r,c); T tl=t[l]; tl.vmin=tl.vout+=a&1?c:-c; t.change(l,tl); T tr=t[r]; tr.vmin=tr.vout-=a&1?c:-c; t.change(r,tr); wt(t.get(0,L).vmin); } }