#include<iostream>
using namespace std;
const int N=3e5+5;
int q,n;
int l[N],r[N],tr[N];
inline int lowbit(int x){return x&-x;}
inline void update(int x,int y)
{
for(int i=x;i<=n;i+=lowbit(i))
tr[i]+=y;
return;
}
inline int query(int x)
{
int res=0;
while(x)
{
res+=tr[x];
x-=lowbit(x);
}
return res;
}
int main()
{
cin>>q;
for(int i=1;i<=q;i++) cin>>l[i]>>r[i],n=max(n,r[i]);
int cnt=1;
for(int i=1;i<=q;i++)
{
int tmp1=query(l[i]),tmp2=query(r[i]);
if(tmp1!=tmp2)
{
cout<<cnt+1<<endl;
}
else
{
update(l[i],1),update(r[i],1);
cnt=max(cnt,r[i]-l[i]+1);
cout<<cnt+1<<endl;
}
}
return 0;
}