#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int n; cin >> n; vector > v(n); for(int i=0; i> v[i].first >> v[i].second; sort(v.begin(), v.end(), [](const pair& x, const pair& y){ return x.first + x.second < y.first + y.second; }); vector dp(10000, false); dp[0] = true; int ret = 0; for(int i=0; i=0; --j){ if(!dp[j]) continue; int k = j + v[i].first; ret = max(ret, k); if(k < 10000) dp[k] = true; } } cout << ret << endl; return 0; }