#include using namespace std; #if __has_include("all.hpp") #include "all.hpp" #else #include #endif using namespace atcoder; //遅延セグ木・区間更新・区間和テンプレ struct S{ long long value; int size; int nowindex; vectordata; }; struct F{ int sd; //何回ルートをとるのか long long data; }; S op(S a, S b){ S tmp=a; tmp.value+=b.value; tmp.size+=b.size; tmp.nowindex=0; for(int i=0;i<31;i++){ tmp.data[i]=a.data[min(a.nowindex+i,30)]+b.data[min(b.nowindex+i,30)]; } return tmp; } //データとデータの演算 S e(){ vectortmp(31,0); return {0, 1, 0,tmp}; } //初期値(データ) S mapping(F f, S x){ if(f.data==-1){ int bef=x.nowindex; x.nowindex=min(30,x.nowindex+f.sd); //cout<>n>>q; lazy_segtree seg(n); for(int i=0;i>a; seg.apply(i,i+1,{0,a}); } while(q--){ int o,l,r; cin>>o>>l>>r; if(o==0){ cout<>x; seg.apply(l,r,{0,x}); }else if(o==2){ seg.apply(l,r,{1,-1}); } // for(int i=0;i