#include using namespace std; int main(){ int N; cin >> N; vector V(N), T(N); for (int i = 0; i < N; i++){ cin >> V[i] >> T[i]; } vector> S(N); for (int i = 0; i < N; i++){ S[i] = make_tuple(V[i] + T[i], V[i], T[i]); } sort(S.begin(), S.end()); for (int i = 0; i < N; i++){ V[i] = get<1>(S[i]); T[i] = get<2>(S[i]); } vector dp(20000, false); dp[0] = true; for (int i = 0; i < N; i++){ for (int j = T[i] - 1; j >= 0; j--){ if (dp[j]){ dp[j + V[i]] = true; } } } int ans = 0; for (int i = 0; i < 20000; i++){ if (dp[i]){ ans = max(ans, i); } } cout << ans << endl; }