#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
int n;
cin >> n;
vector<pair<int,ll>> ng; // (단자-1, 즐거움)
vector<ll> bt; // 단자0 즐거움 양수
ll y = 0, h = 0; // 단자>=1 즐거움 양수 합과 단자 총합
for(int i=0;i<n;i++){
int a; ll b; cin >> a >> b;
if(b>0){
if(a==0) bt.push_back(b);
else y += b, h += a-1;
} else if(b<0 && a>1){
ng.push_back({a-1,b});
} else if(b==0 && a>1){
h += a-1;
}
}
sort(bt.rbegin(), bt.rend());
for(size_t i=1;i<bt.size();i++) bt[i] += bt[i-1];
const int MX=2000;
vector<ll> dp(MX+1, LLONG_MIN);
dp[min(MX,(int)h)] = 0;
for(auto t: ng){
int step = t.first;
ll val = t.second;
for(int i=MX-1;i>=0;i--){
if(dp[i]!=LLONG_MIN){
int ni = min(MX,i+step);
dp[ni] = max(dp[ni], dp[i]+val);
}
}
}
ll ans = LLONG_MIN;
for(int i=0;i<=MX;i++){
ll add = i<bt.size()? bt[i] : bt.back();
ans = max(ans, dp[i]+add+y);
}
cout << ans << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsgCiAgICBjaW4gPj4gbjsKCiAgICB2ZWN0b3I8cGFpcjxpbnQsbGw+PiBuZzsgLy8gKOuLqOyekC0xLCDsppDqsbDsm4ApCiAgICB2ZWN0b3I8bGw+IGJ0OyAvLyDri6jsnpAwIOymkOqxsOybgCDslpHsiJgKICAgIGxsIHkgPSAwLCBoID0gMDsgLy8g64uo7J6QPj0xIOymkOqxsOybgCDslpHsiJgg7ZWp6rO8IOuLqOyekCDstJ3tlakKCiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBpbnQgYTsgbGwgYjsgY2luID4+IGEgPj4gYjsKICAgICAgICBpZihiPjApewogICAgICAgICAgICBpZihhPT0wKSBidC5wdXNoX2JhY2soYik7CiAgICAgICAgICAgIGVsc2UgeSArPSBiLCBoICs9IGEtMTsKICAgICAgICB9IGVsc2UgaWYoYjwwICYmIGE+MSl7CiAgICAgICAgICAgIG5nLnB1c2hfYmFjayh7YS0xLGJ9KTsKICAgICAgICB9IGVsc2UgaWYoYj09MCAmJiBhPjEpewogICAgICAgICAgICBoICs9IGEtMTsKICAgICAgICB9CiAgICB9CgogICAgc29ydChidC5yYmVnaW4oKSwgYnQucmVuZCgpKTsKICAgIGZvcihzaXplX3QgaT0xO2k8YnQuc2l6ZSgpO2krKykgYnRbaV0gKz0gYnRbaS0xXTsKCiAgICBjb25zdCBpbnQgTVg9MjAwMDsKICAgIHZlY3RvcjxsbD4gZHAoTVgrMSwgTExPTkdfTUlOKTsKICAgIGRwW21pbihNWCwoaW50KWgpXSA9IDA7CgogICAgZm9yKGF1dG8gdDogbmcpewogICAgICAgIGludCBzdGVwID0gdC5maXJzdDsKICAgICAgICBsbCB2YWwgPSB0LnNlY29uZDsKICAgICAgICBmb3IoaW50IGk9TVgtMTtpPj0wO2ktLSl7CiAgICAgICAgICAgIGlmKGRwW2ldIT1MTE9OR19NSU4pewogICAgICAgICAgICAgICAgaW50IG5pID0gbWluKE1YLGkrc3RlcCk7CiAgICAgICAgICAgICAgICBkcFtuaV0gPSBtYXgoZHBbbmldLCBkcFtpXSt2YWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxsIGFucyA9IExMT05HX01JTjsKICAgIGZvcihpbnQgaT0wO2k8PU1YO2krKyl7CiAgICAgICAgbGwgYWRkID0gaTxidC5zaXplKCk/IGJ0W2ldIDogYnQuYmFjaygpOwogICAgICAgIGFucyA9IG1heChhbnMsIGRwW2ldK2FkZCt5KTsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8ICJcbiI7Cn0=
MTUKMSAtNDAzNAoxIDM0MDYKMCA2MDYyCjQgLTY4MjQKMCA5Nzk4CjAgNDUwMAowIC0xOTE1CjEgMjEzNwowIDk3ODYKMCA3MzMwCjAgLTkzNjUKMiAyNzMwCjAgLTU3OTcKMCA2MTI5CjAgODkyNQ==
15
1 -4034
1 3406
0 6062
4 -6824
0 9798
0 4500
0 -1915
1 2137
0 9786
0 7330
0 -9365
2 2730
0 -5797
0 6129
0 8925