#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int mx=80005;
int w[mx],v[mx],dp[mx],n,ans;
int main(){
memset(dp,-0x3f,sizeof(dp));
dp[40000]=0;
cin>>n;
for(int i=1;i<=n;i++)cin>>w[i]>>v[i];
for(int i=1;i<=n;i++){
if(w[i]>=0){
for(int j=80000;j>=w[i];j--){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}else{
for(int j=0;j<=80000+w[i];j++){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
}
for(int i=40000;i<=80000;i++)ans=max(ans,i+dp[i]-40000);
cout<<ans;
return 0;
}