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

const int MAX_N = 1 << 18;
const int INF = 1 << 25;
const ll def = -(1LL << 62);

struct MaxSegTree{
	int n;
	ll dat[2 * MAX_N - 1];
	void init(int n_){
		n = 1;
		while(n < n_) n *= 2;
		for(int i = 0; i < 2 * n - 1; i++) dat[i] = -def;
	}

	void update(int k, ll a){
		k += n - 1;
		dat[k] = a;
		while(k > 0) k = (k - 1) / 2, dat[k] = max(dat[k * 2 + 1], dat[k * 2 + 2]);
	}

	ll query(int a, int b){ return query(a, b, 0, 0, n); }

	ll query(int a, int b, int k, int l, int r){
		if(r <= a || b <= l) return def;
		if(a <= l && r <= b) return dat[k];
		ll vl = query(a, b, k * 2 + 1, l, (l + r) / 2);
		ll vr = query(a, b, k * 2 + 2, (l + r) / 2, r);
		return max(vl, vr);
	}

	void show(){
		for(int i = 0; i < n; i++) cout << dat[i + n - 1] << " ";
		cout << endl;
	}
} st;

ll x[200000];
ll s[200010];
ll sum[200010];

int main(){
	cin.tie(0);
	ios::sync_with_stdio(false);
#ifdef LOCAL
	std::ifstream in("in");
	std::cin.rdbuf(in.rdbuf());
#endif

	int N;
	cin >> N;

	st.init(N);
	for(int i = 0; i < N; i++){
		cin >> x[i] >> s[i];
		sum[i + 1] = sum[i] + s[i];
		ll a = sum[i + 1] - x[i];
		//cout << a << endl;
		st.update(i, a);
	}

	ll ans = 0;
	for(int i = 0; i < N; i++){
		ll r = st.query(i, N) + x[i] - sum[i];
		ans = max(ans, r);
	}
	cout << ans << endl;
}
