#include<bits/stdc++.h>
using namespace std;

#define fast                    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int                     long long 
#define fr1(i,a,b)              for(int i=a;i<b;i++)
#define r(n)                    int n; cin>>n;
#define r2(a,b)                 int a,b; cin>>a>>b;
#define r3(a,b,c)               int a,b,c; cin>>a>>b>>c; 
#define rs(s)                   string s; cin>>s;
#define rc(ch)                  char ch; cin>>ch;
#define cy                      cout<<"YES"
#define cn                      cout<<"NO"
#define nl                      cout<<"\n"
#define endl                    "\n"
#define pb                      push_back
#define fr                      first
#define sc                      second
#define ia(a,n)                 for(int i=0;i<n;i++)cin >> a[i];
#define oa(a,n)                 for(int i=0;i<n;i++) cout<<a[i]<<" "; 
#define iv(a)                   for(auto &x : a)cin >> x;
#define sa(a,n)                 sort(a,a+n)
#define pv(v)                   for(auto x: v) cout<<x<<" ";   
#define sz(x)                   ((long long)x.size())
#define vi                      vector<int>
#define uci                     unordered_map<char, int>
#define uic                     unordered_map<int, char>
#define uii                     unordered_map<int, int>
#define mci                     map<char, int>
#define mic                     map<int, char>
#define mii                     map<int, int>
#define pii                     pair<int, int>
#define pci                     pair<char, int>
#define pic                     pair<int, char>
#define vpii                    vector<pii>
#define mod                     1000000007
#define max3(a,b,c)             max(a, max(b, c))
#define max4(a,b,c,d)           max(a, max(b, max(c, d)))
#define min3(a,b,c)             min(a, min(b, c))
#define sumOfArray(v)           accumulate(v.begin(), v.end(), 0); 
#define CountInArray(v,x)       count(v.begin(), v.end(), x)
#define maxElemOfArray(v)       max_element(v.begin(), v.end())
#define mst(arr,x)              memset(arr, x, sizeof(arr));
#define dbg(x)                  cout<<#x<<"="<<(x)<<endl;
#define all(v)                  (v).begin(), (v).end()
#define dbg2(x,y)               cout<<#x<<"="<<(x)<<" "<<#y<<"="<<(y)<<endl;
#define dbg3(x,y,z)             cout<<#x<<"="<<(x)<<" "<<#y<<"="<<(y)<<" "<<#z<<"="<<(z)<<endl;
#define dbg4(x,y,z,w)           cout<<#x<<"="<<(x)<<" "<<#y<<"="<<(y)<<" "<<#z<<"="<<(z)<<" "<<#w<<"="<<(w)<<endl;
#define intmax                  INT_MAX
#define intmin                  INT_MIN
bool cmp(int a,int b){
    return a&1 < b&1;
}   
int a[4] = {1, 0, -1, 0};
int b[4] = {0, 1, 0, -1};

void solve(){
    r(n);
    vector<pii> arr(n);
    fr1(i,0,n){
        cin >> arr[i].sc >> arr[i].fr;
    }
    sort(all(arr));
    int cnt = 0, money = 0;
    int s = 0, e = n - 1;
    //fr = discount after buy  sc = atleast
    while(s <= e){
        if(cnt >= arr[s].fr){
            cnt += arr[s].sc;
            money += arr[s].sc;
            s++;
        }
        else{
            int mini = min(arr[s].fr - cnt, arr[e].sc);
            cnt += mini;
            money += 2 * mini;
            if(mini == arr[e].sc){
                e--;
            }
            else{
                arr[e].sc -= mini;
            }
        }
    }
    cout << money;
}
signed main(){
    fast; 
    cout << fixed << setprecision(25);
    cerr << fixed << setprecision(10);
    auto start = std::chrono::high_resolution_clock::now();
    
    solve();
    // int t=1;cin>>t;while(t--){solve();nl;}
    
    auto stop = std::chrono::high_resolution_clock::now(); 
    auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(stop - start);
    
}
// https://atcoder.jp/contests/abc106/tasks/abc106_c
    // https://atcoder.jp/contests/abc105/tasks/abc105_c
    // https://atcoder.jp/contests/abc104/tasks/abc104_c
    // https://atcoder.jp/contests/abc102/tasks/arc100_a
    // https://atcoder.jp/contests/abc098/tasks/arc098_a