/*
author : TIT_manh
*/
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <stack>
#include <deque>
#include <bitset>
#include <numeric>
#include <functional>
#include <cassert>
#include <sstream>
#include <climits>
#define ll long long
#define FOR(i,l,r) for (int i = l; i <= r; i++)
#define FOD(i,r,l) for (int i = r; i >= l; i--)
#define ALL(x) x.begin(), x.end()
#define lb(v,x) (int)(lower_bound(ALL(v),x)-v.begin())
#define ub(v,x) (int)(upper_bound(ALL(v),x)-v.begin())
#define fi first
#define se second
#define pb push_back
#define endl "\n"
#define double long double
#define m_int 0x3f3f3f3f
#define m_ll 0x3f3f3f3f3f3f3f3f
using namespace std;
const int maxn = 5e5 + 5;
ll a[maxn], p[maxn], n;
pair<ll, ll> v[maxn];
bool cmp(const pair<ll, ll> &A, const pair<ll, ll> &B) {
return A.fi < B.fi;
}
void ciin() {
cin >> n;
FOR(i,1,n) cin >> v[i].fi >> v[i].se;
sort(v + 1, v + n + 1, cmp);
FOR(i,1,n) a[i] = v[i].fi, p[i] = v[i].se, p[i] += p[i - 1];
ll mn = -a[1], res = -m_ll;
FOR(i,1,n) {
mn = min(mn, p[i - 1] - a[i]);
res = max(res, p[i] - a[i] - mn);
}
cout << res;
}
void solve() {
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
ciin(); solve();
return 0;
}