#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n;
struct stu{
ll high,num;
int id;
}a[200005],s[200005];
bool cmp(stu a,stu b){
return a.high<b.high;
}
ll p[200005];
ll tr[200005];
int lowbit(int x){
return x&(-x);
}
void add(int id,ll x){
for(int i=id;i<=n;i+=lowbit(i)) tr[i]+=x;
}
ll find(int x){
ll ans=0;
for(int i=x;i>0;i-=lowbit(i)) ans+=tr[i];
return ans;
}
int tot=1;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lld%lld",&a[i].high,&a[i].num);
s[i]=a[i];
}
sort(a+1,a+n+1,cmp);
p[1]=a[1].high;
for(int i=2;i<=n;i++){
if(a[i].high!=p[tot]){
p[++tot]=a[i].high;
}
}
for(int i=1;i<=n;i++){
int l=1,r=tot;
while(l<r){
int mid=(l+r)/2;
if(p[mid]>s[i].high) r=mid-1;
else if(p[mid]<s[i].high) l=mid+1;
else{
l=mid;
r=mid;
}
}
s[i].id=l;
}
for(int i=1;i<=n;i++){
add(s[i].id,s[i].num);
int all_num=find(n);
int all_mid=(all_num+1)/2;
int l=1,r=n;
while(l<r){
int mid=(l+r)/2;
int fi=find(mid);
if(fi<all_mid){
l=mid+1;
}
else r=mid;
}
printf("%lld\n",p[l]);
}
return 0;
}