除#2以外全WA
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,f[1000009],a[4000009],t[4000009];
void build(int p,int l,int r)
{
t[p]=0;
if(l==r)
{
a[p]=f[l];
return ;
}
int mid=(l+r)>>1;
build(p<<1,l,mid);
build(p<<1|1,mid+1,r);
a[p]=a[p<<1]+a[p<<1|1];
}
void add(int x,int y,int l,int r,int p)
{
if(x<=l&&r<=y)
{
a[p]=(r-l+1)-a[p];
t[p]^=1;
return ;
}
int mid=(l+r)>>1;
if(t[p]!=0)
{
t[p<<1]^=1;
a[p<<1]+=t[p]*(mid-l+1);
t[p<<1|1]^=1;
a[p<<1|1]+=t[p]*(r-mid);
t[p]=0;
}
if(x<=mid) add(x,y,l,mid,p<<1);
if(y>mid) add(x,y,mid+1,r,p<<1|1);
a[p]=a[p<<1]+a[p<<1|1];
}
int ask(int x,int y,int l,int r,int p)
{
int ans=0;
if(x<=l&&r<=y) return a[p];
int mid=(l+r)>>1;
if(t[p]!=0)
{
t[p<<1]^=1;
a[p<<1]+=t[p]*(mid-l+1);
t[p<<1|1]^=1;
a[p<<1|1]+=t[p]*(r-mid);
t[p]=0;
}
if(x<=mid) ans+=ask(x,y,l,mid,p<<1);
if(y>mid) ans+=ask(x,y,mid+1,r,p<<1|1);
return ans;
}
signed main()
{
cin>>n>>m;
build(1,1,n);
while(m--)
{
int op,x,y;
cin>>op;
if(op==0)
{
cin>>x>>y;
add(x,y,1,n,1);
}
else
{
cin>>x>>y;
cout<<ask(x,y,1,n,1)<<endl;
}
}
return 0;
}