#include #include #include #define f cin #define mod 4001 #define g cout #define N 50100 #define M 400100 #define lm 10 using namespace std; int S[lm][M],D[lm][M],SOL[lm][M]; bool P[lm][M]; int i,n,m,x,p,nr,val,a,b,sol,X,t,j,T; long long solutie,DR; void up(int bit,int st,int dr,int po) { if(st==dr) { P[bit][po]=x; return; } int mij=(st+dr)>>1; if(p<=mij) up(bit,st,mij,po<<1); else up(bit,mij+1,dr,(po<<1)+1); P[bit][po]=!(P[bit][po<<1]==P[bit][(po<<1)+1]); } void us(int bit,int st,int dr,int po) { if(st==dr) { S[bit][po]=x; return ; } int mij=(st+dr)>>1; if(p<=mij) us(bit,st,mij,po<<1); else us(bit,mij+1,dr,(po<<1)+1); S[bit][po]=S[bit][po<<1]; if(P[bit][po<<1]) { nr=dr-mij; S[bit][po]+=nr-S[bit][(po<<1)+1]; } else { S[bit][po]+=S[bit][(po<<1)+1]; } S[bit][po]%=mod; } void ud(int bit,int st,int dr,int po) { if(st==dr) { D[bit][po]=x; return ; } int mij=(st+dr)>>1; if(p<=mij) ud(bit,st,mij,po<<1); else ud(bit,mij+1,dr,(po<<1)+1); D[bit][po]=D[bit][(po<<1)+1]; if(P[bit][(po<<1)+1]) { nr=mij-st+1;; D[bit][po]+=nr-D[bit][po<<1]; } else { D[bit][po]+=D[bit][po<<1]; } D[bit][po]%=mod; } void u(int bit,int st,int dr,int po) { if(st==dr) { SOL[bit][po]=x; return ; } int mij=(st+dr)>>1; if(p<=mij) u(bit,st,mij,po<<1); else u(bit,mij+1,dr,(po<<1)+1); val=SOL[bit][(po<<1)+1]+SOL[bit][po<<1]; nr=dr-mij; val+=(int)D[bit][po<<1]*(nr-S[bit][(po<<1)+1])%mod; val%=mod; nr=mij-st+1; val+=(int)S[bit][(po<<1)+1]*(nr-D[bit][po<<1])%mod; val%=mod; while(val<0) val+=mod; while(val>=mod) val-=mod; SOL[bit][po]=val; } void find(int bit,int st,int dr,int po) { if(st>=a&&dr<=b) { sol+=DR*(dr-st+1-S[bit][po]); sol+=(st-a-DR)*S[bit][po]; sol+=SOL[bit][po]; val=D[bit][po]; if(P[bit][po]) { nr=st-a; val+=(nr-DR); } else val+=DR; DR=val; sol%=mod; DR%=mod; return; } int mij=(st+dr)>>1; if(a<=mij) find(bit,st,mij,po<<1); if(b>mij) find(bit,mij+1,dr,(po<<1)+1); } int main () { f>>n>>m; for(i=1;i<=n;++i) { p=i; f>>X; for(t=0,j=1;t>T; if(T==1) { f>>p>>X; assert(0<=x&&x<=1000); assert(1<=p&&p<=n); for(t=0,j=1;t>a>>b; solutie=0; for(t=0,j=1;t=mod) solutie-=mod; } g<