全 WA
#include<bits/stdc++.h>
using namespace std;
inline long long read() {
long long s=0;
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') {
s=(s<<3)+(s<<1)+(ch^48);
ch=getchar();
}
return s;
}
inline void write(long long x) {
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
struct nd{
int l,r,pos=0,sum=0;
}c[100005];
int a[200005];
int len;
int n,m;
int cnt;
void build(){
int l=1,r=len;
while(l<=n){
if(r>=n){
c[++cnt].l=l;
c[cnt].r=n;
break;
}
c[++cnt].l=l;
c[cnt].r=r;
l+=len;
r+=len;
}
}
int s;
void find(int pos){
// int l=0,r=cnt;
// s=cnt;
// while(l<r){
// int mid=(l+r)/2;
// if(c[mid].l<=pos){
// s=max(s,mid);
// r=mid-1;
// }
// else {
// l=mid+1;
// }
// }
// int ss=-0x3f3f3f3f;
// for(int i=max(1,s-10);i<=min(cnt,s+10);i++){
// if(c[i].l<=pos) ss=max(ss,i);
// else break;
// }
// s=ss;
for(int i=1;i<=cnt;i++){
if(c[i].r>=pos){
s=i;
return ;
}
}
}
void add(int l,int r){
find(l);
int ans=0;
if(c[s].l<l&&s<=cnt&&s>=1){
for(int i=l;i<=min(c[s].r,r);i++){
a[i]++;
if(a[i]%2==1){
c[s].sum++;
}
else {
c[s].sum--;
}
}
s++;
}
while(c[s].r<=r&&s<=cnt&&s>=1){
c[s].pos++;
c[s].sum=(c[s].r-c[s].l+1)-c[s].sum;
s++;
}
if(c[s].l<=r&&s<=cnt&&s>=1){
for(int i=c[s].l;i<=r;i++){
a[i]++;
if(a[i]%2==1){
c[s].sum++;
}
else {
c[s].sum--;
}
}
}
}
int check(int l,int r){
find(l);
int ans=0;
if(c[s].l<l&&s<=cnt&&s>=1){
for(int i=l;i<=min(r,c[s].r);i++){
if((c[s].pos+a[i])%2==1) ans++;
}
s++;
}
while(c[s].r<=r&&s<=cnt&&s>=1){
ans+=c[s].sum;
s++;
}
if(c[s].l<=r&&s<=cnt&&s>=1){
for(int i=c[s].l;i<=r;i++){
if((c[s].pos+a[i])%2==1) ans++;
}
}
return ans;
}
int main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
len=sqrt(n);
build();
c[cnt+1].r=0x3f3f3f3f;
c[cnt+1].l=0x3f3f3f3f;
c[0].l=-0x3f3f3f3f;
c[0].r=-0x3f3f3f3f;
for(int i=1;i<=m;i++){
int op,l,r;
cin>>op>>l>>r;
if(op==0){
add(l,r);
}
else {
cout<<check(l,r)<<"\n";
}
}
return 0;
}