#include <bits/stdc++.h>
#include <iostream>
#define X 10005
#define inf 0x3f3f3f3f
#define PI 3.141592653589793238462643383
#define IO ios::sync_with_stdio(false),cin.tie(0), cout.tie(0);
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
typedef long long ll;
const ll moad=1e9+7;
const int maxn=1e6+10;
int dp[maxn];
int w[maxn];
int c[maxn];
int vis[maxn];
int Max=2e5;//固定偏移量
int main()
{int n;while(cin>>n){for(int i=0;i<n;++i){cin>>c[i]>>w[i];if(c[i]<=0&&w[i]<=0)--i,n--;}for(int i=0;i<=Max;++i) dp[i]=-inf;dp[100000]=0;for(int i=0;i<n;++i){if(c[i]>=0){for(int j=Max;j>=c[i];--j)if(dp[j-c[i]]>-inf)dp[j]=max(dp[j],dp[j-c[i]]+w[i]);}if(c[i]<0){for(int j=0;j<=Max+c[i];++j)if(dp[j-c[i]]>-inf)dp[j]=max(dp[j],dp[j-c[i]]+w[i]);}}int ans=0;for(int i=1e5;i<=Max;++i)if(dp[i]>0&&(dp[i]+i-Max/2)>ans)ans=dp[i]+i-1e5;cout<<ans<<endl;}return 0;
}