// Born_To_Laugh - Hughie Do
#include <bits/stdc++.h>
#define alle(AC) AC.begin(), AC.end()
#define fi first
#define se second
using namespace std;
typedef long long ll;
[[maybe_unused]] const int MOD = 998244353, INF = 1e9 + 7;
class SegmentTree
{
private:
struct Node {
int val = 0;
int lc = 0;
int rc = 0;
bool lazy = 0;
};
int n;
vector<Node> tree;
inline void ope(int id, int l, int r){
if(tree[id].lazy == 0) return;
tree[id].val = (r - l + 1);
if(l != r){
if(!tree[id].lc) { tree[id].lc = tree.size(); tree.emplace_back(); }
if(!tree[id].rc) { tree[id].rc = tree.size(); tree.emplace_back(); }
tree[tree[id].lc].lazy = 1;
tree[tree[id].rc].lazy = 1;
}
tree[id].lazy = 0;
}
inline void upd(int id, int l, int r, int lo, int hi){
ope(id, l, r);
if(l > hi || r < lo) return;
else if(l >= lo && r <= hi){
tree[id].lazy = 1;
ope(id, l, r);
return;
}
int mid = l + ((r - l) >> 1);
if(!tree[id].lc) { tree[id].lc = tree.size(); tree.emplace_back(); }
if(!tree[id].rc) { tree[id].rc = tree.size(); tree.emplace_back(); }
upd(tree[id].lc, l, mid, lo, hi);
upd(tree[id].rc, mid + 1, r, lo, hi);
tree[id].val = tree[tree[id].lc].val + tree[tree[id].rc].val;
}
inline int qr(int id, int l, int r, int lo, int hi){
if(!id) return 0;
ope(id, l, r);
if(l > hi || r < lo) return 0;
else if(l >= lo && r <= hi) return tree[id].val;
int mid = l + ((r - l) >> 1);
return qr(tree[id].lc, l, mid, lo, hi) + qr(tree[id].rc, mid + 1, r, lo, hi);
}
public:
inline void init(int len){
n = len;
tree.reserve(6000000);
tree.assign(2, Node());
}
inline void upd(int l, int r){
upd(1, 1, n, l, r);
}
inline int qr(int l, int r){
return qr(1, 1, n, l, r);
}
};
SegmentTree st;
int n;
inline void solve(){
st.init(int(1e9) + 10);
cin >> n;
int c = 0;
for(int i=1; i<=n; ++i){
int d;cin >> d;
if(d == 1){
int x, y;cin >> x >> y;
c = st.qr(x + c, y + c);
cout << c << '\n';
}
else{
int x, y;cin >> x >> y;
st.upd(x + c, y + c);
}
}
}
signed main(){
// freopen("inp.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
solve();
}