#include #include #include using namespace atcoder; using mint = modint1000000007; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000001 #define sz 300 int main(){ int N,Q; cin>>N>>Q; vector a(N,0); int cnt = (N+sz-1)/sz; vector lazy(cnt,0); vector Ac(cnt,0),Bc(cnt,0); long long A=0,B=0; rep(_,Q){ int x,l,r; scanf("%d %d %d",&x,&l,&r); if(x==0){ int AA = 0,BB = 0; while(l<=r){ if(l%sz==0 || l+sz>r){ int rr; rr = ((l+sz)/sz)*sz-1; if(rr>r)rr = r; for(int i=l;i<=rr;i++){ if(lazy[i/sz]==1||(lazy[i/sz]==0&&a[i]==1))AA++; if(lazy[i/sz]==2||(lazy[i/sz]==0&&a[i]==2))BB++; } l = rr+1; } else{ AA += Ac[l/sz]; BB += Bc[l/sz]; l += sz; } } if(AA>BB)A += AA; if(AAr){ int rr; rr = ((l+sz)/sz)*sz-1; if(rr>r)rr = r; if(lazy[l/sz]!=0){ for(int i=(l/sz)*sz;i