#include<iostream>
using namespace std;
#define ls (x<<1)
#define rs (x<<1|1)
#define mid ((l+r)>>1)
constexpr int manx = 2e5+10;
int f[manx<<2],m,n,a,b,c,tag[manx<<2],sum;
inline void push_up(const int x)
{
f[x]=f[ls]+f[rs];
}
inline void Push_down(const int l,const int r,const int x,const int t)
{
if(tag[x]||t){
f[x]=r-l+1-f[x];
tag[x]=!tag[x];
if(l==r)tag[x]=0;
}
}
inline void push_down(const int l,const int r,const int x)
{
if(tag[x]){
f[x]=r-l+1-f[x];
tag[x]=!tag[x];
}
Push_down(l,mid,ls,tag[x]);
Push_down(mid+1,r,rs,tag[x]);
}
inline void into(const int l,const int r,const int nl,const int nr,const int x)
{
if(l>=nl&&r<=nr)
{
f[x]=r-l+1-f[x];
tag[x]=!tag[x];
if(l==r)tag[x]=0;
push_down(l,r,x);
return;
}
push_down(l,r,x);
if(nl<=mid) into(l,mid,nl,nr,ls);
if(nr>=mid+1) into(mid+1,r,nl,nr,rs);
push_up(x);
}
inline void find_(const int l,const int r,const int nl,const int nr,const int x)
{
push_down(l,r,x);
if(l>=nl&&r<=nr)
{
sum+=f[x];
return;
}
if(nl<=mid)find_(l,mid,nl,nr,ls);
if(nr>=mid+1)find_(mid+1,r,nl,nr,rs);
push_up(x);
}
int main()
{
// freopen("out.txt","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int q=0;q<m;q++)
{
cin>>c>>a>>b;
if(c==0)
{
into(1,n,a,b,1);
}
else
{
sum=0;
find_(1,n,a,b,1);
cout<<sum<<endl;
}
}
}