#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
struct node{
	long long a;
	long long b;
}a[maxn];

bool cmp(node x,node y)
{
	return x.b<y.b;
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld%lld",&a[i].a,&a[i].b);
	}
	sort(a+1,a+1+n,cmp);
	int l=1,r=n;
	long long cnt=0;
	long long ans=0;
	while(l<=r)
	{
			if(cnt>=a[l].b)
		{
			ans+=a[l].a;
			cnt+=a[l].a;
			l++;
		}
		else
		{
			long long dx=min(a[r].a,a[l].b-cnt);///minminminmin
			a[r].a-=dx;
			cnt+=dx;
			ans+=2*dx;
			if(a[r].a==0)
			r--;
		}
	}
	cout<<ans;
	
}