#include <bits/stdc++.h>
using namespace std;
using VI = vector<int>;
using PII = pair<int,int>;
using ll = long long;
using ull = unsigned long long;
int n;
int a[2000010];
int b[2000010];
int check(int mid){
int j = 1;
for(int i=2;i<=n;i++){
int r = 0;
int t = j;
while(i<=n && a[j] + b[j] + mid >= a[i]){
if(a[i] + b[i] + mid > r){
r = a[i] + b[i] + mid;
t = i;
}
i++;
}
i--;
j = t;
if(r == 0) return 0;
if(r >= a[n]) return 1;
}
return 0;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
}
int left = 0;
int right = a[n] - b[n];
while(left < right){
int mid = (left + right) >> 1;
if(check(mid)){
right = mid;
}else{
left = mid + 1;
}
}
//cout<<check(3);
cout<<left;
}
二分了一下,跑了个区间覆盖