#include<bits/stdc++.h>
using namespace std;
int a[1000006],V[1000006];
struct f{
int num;
int d;
};
int main(){
stack<f>s;
stack<int>s2;
int n;cin>>n;
for (int i=1;i<=n;++i)cin>>a[i]>>V[i];
for (int i=n;i>=1;--i){
while (!s.empty()&&s.top().d<a[i])s.pop();
if (!s.empty())s2.push(s.top().num);
else s2.push(0);
s.push({i,a[i]});
}
vector<int>v;
while (!s2.empty()){
v.push_back(s2.top());
s2.pop();
}
while (!s.empty())s.pop();
for (int i=1;i<=n;++i){
while (!s.empty()&&s.top().d<a[i])s.pop();
if (!s.empty())s2.push(s.top().num);
else s2.push(0);
s.push({i,a[i]});
}
vector<int>v2;
while (!s2.empty()){
v2.push_back(s2.top());
s2.pop();
}
int ans[1000006]={0};
for (int i=1;i<=n;++i){
if(v[i-1])ans[v[i-1]]+=V[i];
if(v2[i-1])ans[v2[i-1]]+=V[i];
}
int maxn=0;
for (int i=1;i<=n;++i)if(ans[i]>maxn)maxn=ans[i];
cout<<maxn;
return 0;
}