/*
auther: FPythonX
*/
#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
#include <chrono>
// #pragma GCC optimize("Ofast,O3,unroll-loops")
// #pragma GCC target("avx,avx2")
using namespace std;
using namespace chrono;
// using namespace __gnu_pbds;
#define int long long
#define vi vector<int>
#define vch vector<char>
#define vs vector<string>
#define vvi vector<vector<int>>
#define vvh vector<vector<char>>
#define vvs vector<vector<string>>
#define all(x) x.begin(), x.end()
#define pii pair<int, int>
#define endl '\n'
#define vpii vector<pair<int,int>>
#define vvpii vector<vector<pair<int, int>>>
// #define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
#define gcd(a, b) __gcd(a, b)
#define lcm(a, b) (int)((a * b) / __gcd(a, b))
#define ff first
#define sd second
#define pb push_back
#define sz(x) (int)x.size()
const int inf = 1e18;
void fre_open(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
#ifdef FPythonX
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
void FPythonX(){
int n; cin >> n;
vector<array<int, 2>> a(n);
for(int i = 0; i < n; i++){
cin >> a[i][0] >> a[i][1];
}
sort(all(a));
int sm = 0;
int ans = -inf;
int mn = inf;
for(int i = 0; i < n; i++){
sm += a[i][1];
ans = max(ans, sm - a[i][0] - mn);
ans = max(ans, a[i][1]);
mn = min(mn, sm - a[i][1] - a[i][0]);
}
cout << ans << endl;
}
signed main(){
auto start = high_resolution_clock::now();
fre_open();
int t = 1;
// cin >> t;
while(t--) FPythonX();
auto end = high_resolution_clock::now();
auto duration = duration_cast<milliseconds>(end - start);
cerr << "Kod " << duration.count() << " ms da ishladi." << endl;
return 0;
}