#include<algorithm>
using namespace std;
int n;
int dp[1005][20005];
struct Item
{
int v;
int w;
}item[1005];
bool comp(struct Item x,struct Item y)
{
return x.v < y.v;
}
int main()
{
cin >> n;
for(int i = 1;i <= n;i++)
cin >> item[i].w >> item[i].v;
sort(item+1,item+n+1,comp);
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= item[n].v;j++)
{
if(i == n && j == item[n].v)
{
dp[i][j] = item[n].v + dp[i-1][j];
break;
}
if(j < item[i].w)
dp[i][j] = dp[i-1][j];
else if(j == item[i].w)
dp[i][j] = max(dp[i-1][j],item[i].v);
else if(j > item[i].w)
dp[i][j] = item[i].v + dp[i-1][j - item[i].w];
}
}
cout << dp[n][item[n].v];
return 0;
}