#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
map<ll,int> mp,lz;
struct segment{
void flush(int il,int ir,int now){
if(lz[now]==0) return;
mp[now]=ir-il+1;
if(il!=ir){
int mid=(il+ir)/2;
lz[now<<1]=1;
lz[now<<1|1]=1;
}
lz[now]=0;
}
void upd(int il,int ir,int l,int r,int now){
flush(il,ir,now);
if(ir<l||il>r) return;
if(l<=il&&ir<=r){
lz[now]=1;
flush(il,ir,now);
return;
}
int mid=(il+ir)>>1;
upd(il,mid,l,r,now<<1);
upd(mid+1,ir,l,r,now<<1|1);
mp[now]=mp[now<<1]+mp[now<<1|1];
// cout<<il<<' '<<ir<<' '<<mp[{il,ir}]<<'\n';
}
void upd(int l,int r){upd(1,1e9,l,r,1);}
ll qry(int il,int ir,int l,int r,int now){
flush(il,ir,now);
if(ir<l||il>r) return 0;
if(l<=il&&ir<=r){
return mp[now];
}
int mid=(il+ir)>>1;
return qry(il,mid,l,r,now<<1)+qry(mid+1,ir,l,r,now<<1|1);
}
ll qry(int l,int r){return qry(1,1e9,l,r,1);}
}t;
int main(){
cin.tie(0)->sync_with_stdio(0);
int m;cin>>m;
int now=0;
while(m--){
int opr,x,y;cin>>opr>>x>>y;
if(opr==1){
int tmp=t.qry(x+now,y+now);
cout<<tmp<<'\n';
now=tmp;
}
else t.upd(x+now,y+now);
}
}