#include<iostream>
#include<cstdio>
using namespace std;
const int N=200005;
int n,id,pos[N],val[N],ans[N],w[N*3];
void build(int k,int left,int right){
w[k]=right-left+1;
int mid=(left+right>>1);
if(left<right){
build(k<<1,left,mid);
build(k<<1|1,mid+1,right);
}
}
void updata(int k,int pos,int l,int r){
w[k]--;
if(l==r){
id=l;return;
}
int mid=(l+r)/2;
if(w[k<<1]>=pos) updata(k<<1,pos,l,mid);
else{
pos-=w[k<<1];
updata(k<<1|1,pos,mid+1,r);
}
}
int main(){
freopen("a.txt","r",stdin);
while(scanf("%d",&n)==1){
build(1,1,n);
for(int i=1;i<=n;i++)
scanf("%d%d",&pos[i],&val[i]);
for(int i=n;i>=1;i--){
updata(1,pos[i]+1,1,n);
ans[id]=val[i];
}
for(int i=1;i<=n;i++)
printf("%d ",ans[i]);
putchar('\n');
}
return 0;
}