#include <bits/stdc++.h>
using namespace std;
const int N = 1e8 + 1;
int t[2 * N], h[2 * N];
int c;
void push(int v, int l, int r)
{
if(!h[v]) return;
if(l == r)
{
t[v] = (r - l + 1) * h[v];
h[v] = 0;
return;
}
else
{
t[v] = (r - l + 1) * h[v];
h[v + v] = h[v];
h[v + v + 1] = h[v];
h[v] = 0;
return;
}
}
void upd(int v, int l, int r, int ql, int qr)
{
int mid = l + r >> 1;
if(r < ql || l > qr) return;
if(ql <= l && r <= qr)
{
h[v] = 1;
push(v, l, r);
return;
}
else
{
upd(v + v, l, mid, ql, qr);
upd(v + v + 1, mid + 1, r, ql, qr);
}
push(v + v, l, mid);
push(v + v + 1, mid + 1, r);
t[v] = t[v + v] + t[v + v + 1];
}
int getsum(int v, int l, int r, int ql, int qr)
{
push(v, l, r);
if(r < ql || l > qr) return 0;
if(ql <= l && r <= qr)
{
return t[v];
}
else
{
int mid = l + r >> 1;
return getsum(v + v, l, mid, ql, qr) + getsum(v + v + 1, mid + 1, r, ql, qr);
}
}
main()
{
int m; cin >> m;
while(m--)
{
int d, l, r;
cin >> d >> l >> r;
if(d % 2)
{
c = getsum(1, 1, N, l + c, r + c);
//if(r + c > N - 1) assert(0);
cout << c << endl;
}
else
{
upd(1, 1, N, l + c, r + c);
}
}
}
/*
6
2 1 7
2 10 12
1 7 11
2 11 13
1 8 10
1 15 17
*/