#include<bits/stdc++.h>
#define l(x) x<<1
#define r(x) x<<1|1
#define bar(x,y) x+y>>1
using namespace std;
int n,m;
struct sb{
int v,i,l,r;
bool add;
}c[1000086];
void bui(int p,int l,int r){
c[p].l=l;
c[p].r=r;
c[p].v=0;
if(l==r){
return;
}
int mid=bar(l,r);
bui(l(p),l,mid);
bui(r(p),mid+1,r);
}
void spr(int p){
if(c[p].add)
{
c[l(p)].v^=1;
c[r(p)].v^=1;
c[l(p)].add^=c[p].add;
c[r(p)].add^=c[p].add;
c[p].add = 0;
}
}
void cha(int p,int l,int r){
if(l>=c[p].l&&r<=c[p].r){
c[p].v=(r-l+1)-c[p].v;
c[p].add^=1;
return;
}
spr(p);
int mid=bar(l,r);
if(l<=mid){
cha(l(p),l,r);
}
if(r>mid){
cha(r(p),l,r);
}
}
int ask(int p,int l,int r){
if(l<=c[p].l&&c[p].r<=r)return c[p].v;
spr(p);
int mid=bar(c[p].l, c[p].r),sum=c[p].v;
if(l<=mid) sum+=ask(l(p),l,r);
if(r>mid) sum+=ask(r(p),l,r);
return sum;
}
int main(){
cin>>n;
bui(1,1,n);
cin>>m;
while(m--){
int k,x,y;cin>>k>>x>>y;
if(!k){
cha(1,x,y);
}
else {
cout<<ask(1,x,y)<<endl;
}
}
}