#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>

using namespace std;
//#define int long long

const int mod = 998244353 , mod2 = 1e9 + 13;

int umn(int a , int b) {
    return ((a * b) % mod + mod) % mod;
}
int add(int a , int b) {
    return ((a + b) % mod + mod) % mod;
}
int umn2(int a , int b) {
    return ((a * b) % mod2 + mod2) % mod2;
}
int mn(int a , int b) {
    return ((a - b) % mod + mod) % mod;
}

int bp(int a , int p) {
    if(p == 0)return 1;
    if(p % 2 == 0) {
        int x = bp(a , p / 2);
        return umn(x , x);
    } else {
        return umn(bp(a , p - 1) , a);
    }
}
vector<int> a ,p;
vector<int> ans;

void recalc() {
    unordered_map<int , vector<int>> mp;
    unordered_map<int , int> cntcl;
    set<pair<int , int>> st; //id , color
    for(int i = 0 ; i < a.size() ; i++) {
        mp[a[i]].push_back(i);
        if(mp[a[i]].size() == 1) st.insert({i , a[i]});
    }
    p.clear();
    int lastcl = a[0];
    p.push_back(0);
    ans[0] = 1;
    cntcl[a[0]]++;
    st.erase({0 , a[0]});
    if(1 < mp[a[0]].size()) {
        st.insert({mp[a[0]][1] , a[0]});
    }
    while(p.size() != a.size()) {
        auto it = st.begin();
        if ((*it).second == lastcl && st.size() != 1) {
            it++;
        }
        p.push_back((*it).first);
        cntcl[(*it).second]++;
        lastcl = (*it).second;
        pair<int , int> nw ;
        if(cntcl[(*it).second] < mp[(*it).second].size()) {
            nw = {mp[(*it).second][cntcl[(*it).second]] , (*it).second};
            st.insert(nw);
        }
        st.erase(*it);
    }
    for(int i = 0 ; i < p.size() ; i++) {
        ans[p[i]] = i + 1;
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n , sum =0 , mx = 0;
    cin >> n;
    for(int i = 0 ; i< n ; i++) {
        int a , b;
        cin >> a >> b;
        sum += a;
        mx = max(mx , sum)
    }
    for(int i = 0 ; i < n ; i++) {
        int x;
        cin >> x;
    }
    cout <<mx;

}
