#include using namespace std; const int N=100010; long long c[N],d[N],p[N],dp[N],tr[4*N]; int st[N],tp; void u(int o,int l,int r,int x,long long v){ if(l==r){tr[o]=v;return;} int m=(l+r)>>1; if(x<=m)u(o<<1,l,m,x,v); else u(o<<1|1,m+1,r,x,v); tr[o]=min(tr[o<<1],tr[o<<1|1]); } long long q(int o,int l,int r,int L,int R){ if(L<=l&&r<=R)return tr[o]; int m=(l+r)>>1; long long res=LLONG_MAX; if(L<=m)res=min(res,q(o<<1,l,m,L,R)); if(R>m)res=min(res,q(o<<1|1,m+1,r,L,R)); return res; } int main(){ int n; scanf("%d", &n); c[0]=0; for(int i=1;i<=n;i++)scanf("%lld%lld", c+i, d+i); p[0]=0; for(int i=1;i<=n;i++)p[i]=p[i-1]+d[i]; dp[0]=0; tp=0;st[++tp]=0; u(1,0,n-1,0,-p[1]); for(int i=1;i<=n;i++){ while(tp>1&&c[st[tp]]>=c[i])tp--; int k=st[tp]; st[++tp]=i; long long m=q(1,0,n-1,k,i-1); long long o1=c[i]+m; long long o2=(k>0)?(dp[k]-p[k]):LLONG_MAX; dp[i]=p[i]+min(o1,o2); if(i