rt
#include <bits/stdc++.h>
#define int long long
#define INF lONG_LONG_MAX
#define maxn 2005
using namespace std;
int n,m;
struct node{
int lz,sum;
}t[maxn << 4];
void push_up(int k){
t[k].sum = t[k << 1].sum + t[k << 1 | 1].sum;
}
void push_down(int k,int l,int r){
int mid = (l + r) >> 1;
if(t[k].lz == 1){
t[k << 1].lz ^= 1;
t[k << 1 | 1].lz ^= 1;
t[k << 1].sum = mid - l + 1 - t[k << 1].sum;
t[k << 1 | 1].sum = r - mid - t[k << 1 | 1].sum;
t[k].lz = 0;
}
}
void modify(int k,int l,int r,int ql,int qr){
if(ql <= l && r <= qr){
t[k].lz ^= 1;
t[k].sum = r - l + 1 - t[k].sum;
} else {
push_down(k,l,r);
int mid = (l + r) >> 1;
if(ql <= mid) modify(k << 1,l,mid,ql,qr);
else modify(k << 1 | 1,mid + 1,r,ql,qr);
push_up(k);
}
}
int query(int k,int l,int r,int ql,int qr){
if(ql <= l && r <= qr){
return t[k].sum;
} else {
push_down(k,l,r);
int mid = (l + r) >> 1;
int ans = 0;
if(ql <= mid) ans += query(k << 1,l,mid,ql,qr);
if(qr > mid) ans += query(k << 1 | 1,mid + 1,r,ql,qr);
return ans;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
while(m --){
int pd,l,r;
cin >> pd >> l >> r;
if(pd == 0) modify(1,1,n,l,r);
else cout << query(1,1,n,l,r) << "\n";
}
return 0;
}