#include <bits/stdc++.h>
using namespace std;
/*
思路:用暴力双循环最多70分
1.用一层循环,排序,前缀相加,后缀相加
*/
typedef struct data
{
int y;//存储y
int res;//存储result
int res0;//存储小于等于当前y值的0的个数
int res1;//存储大于等于当前y值的0的个数
int ans;//结果数
}Data;
bool comp1(Data d1,Data d2)//起初排序法1
{
if(d1.y!=d2.y)
return d1.y<d2.y;
else
return d1.res<d2.res;
}
bool comp2(Data d1,Data d2)//最终排序法2
{
if(d1.ans!=d2.ans)
{
return d1.ans<d2.ans;
}
else
{
return d1.y<d2.y;
}
}
int main()
{
int m;
cin>>m;
int y,res;
vector<Data> arr;
for(int i=0;i<m;i++)
{
cin>>y>>res;
Data t;
t.y=y;
t.res=res;
if(res==1)
{
t.res0=0;
t.res1=1;
}
else
{
t.res0=1;
t.res1=0;
}
arr.push_back(t);
}
sort(arr.begin(),arr.end(),comp1);
for(int i=1;i<arr.size();i++)//前缀相加
{
arr[i].res0=arr[i-1].res0+arr[i].res0;
}
for(int i=arr.size()-2;i>=0;i--)//后缀相加
{
arr[i].res1=arr[i+1].res1+arr[i].res1;
}
arr[0].ans=arr[0].res1;//第一个元素值为res1
for(int i=1;i<arr.size();i++)
{
if(arr[i].res==0)//减去等于0的情况
arr[i].ans=arr[i].res0+arr[i].res1-1;
else
arr[i].ans=arr[i].res0+arr[i].res1;
if(arr[i].y==arr[i-1].y)//多个y值相等的,排完序后,只和第一个有关
arr[i].ans=arr[i-1].ans;
}
sort(arr.begin(),arr.end(),comp2);
cout<<arr[arr.size()-1].y<<endl;
return 0;
}