#include<bits/stdc++.h>
#define endl '\n'
typedef long long ll;
using namespace std;
int n,m,a[200005],lef[800],righ[800],len,pos[200005],sum[800],tag[800],opt,l,r;
void add(int l,int r){
int px = pos[l],py = pos[r];
if(px == py){
for(int i = l;i <= r;i++)sum[px] += (a[i] ^ tag[py] == 0 ? 1 : -1),a[i] ^= 1;
return;
}
for(int i = l;i <= righ[px];i++)sum[px] += (a[i] ^ tag[px] == 0 ? 1 : -1),a[i] ^= 1;
for(int i = px + 1;i < py;i++)sum[i] = (righ[i] - lef[i] + 1) - sum[i],tag[i] ^= 1;
for(int i = lef[py];i <= r;i++)sum[py] += (a[i] ^ tag[py] == 0 ? 1 : -1),a[i] ^= 1;
}
int query(int l,int r){
int px = pos[l],py = pos[r],ans = 0;
if(px == py){
for(int i = l;i <= r;i++)ans += (a[i] ^ tag[px]);
return ans;
}
for(int i = l;i <= righ[px];i++)ans += (a[i] ^ tag[px]);
for(int i = px + 1;i < py;i++)ans += sum[i];
for(int i = lef[py];i <= r;i++)ans += (a[i] ^ tag[py]);
return ans;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
len = sqrt(n);
for(int i = 1;i <= n;i++)pos[i] = (i - 1) / len + 1;
for(int i = 1;i <= len;i++)lef[i] = righ[i - 1] + 1,righ[i] = i * len;
while(m--){
cin >> opt >> l >> r;
if(opt == 0)add(l,r);
else cout << query(l,r) << endl;
}
}