#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
bool a[N],add[N]; int b_siz;
int n,m;
void change(int l,int r){
int lb=(l-1)/b_siz,rb=(r-1)/b_siz;
if(lb==rb){
for(int i=l;i<=r;i++)
a[i]=!a[i];
}else{
for(int i=l;i<=(lb+1)*b_siz&&i<=n;i++) a[i]=!a[i];
for(int b=lb+1;b<rb;b++) add[b]^=1;
for(int i=rb*b_siz+1;i<=r&&i<=n;i++) a[i]=!a[i];
}
}
int query(int l,int r){
int lb=(l-1)/b_siz,rb=(r-1)/b_siz;
if(lb==rb){
int cnt=0;
for(int i=l;i<=r;i++)
cnt+=(a[i]^add[lb]);
return cnt;
}else{
int cnt=0;
for(int i=l;i<=(lb+1)*b_siz&&i<=n;i++)
cnt+=(a[i]^add[lb]);
for(int b=lb+1;b<rb;b++){
if(add[b])
cnt+=b_siz;
}
for(int i=rb*b_siz+1;i<=r&&i<=n;i++)
cnt+=(a[i]^add[rb]);
return cnt;
}
return -1;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
memset(a,0,sizeof(a));
memset(add,0,sizeof(add));
cin>>n>>m;
b_siz=sqrt(n)+1;
while(m--){
int op,l,r;
cin>>op>>l>>r;
if(op==0) change(l,r);
else cout<<query(l,r)<<'\n';
}
return 0;
}