#include #include #include using namespace std; int dp[10001][10001]; int main() { vector>> input; int N; cin >> N; input.resize(N); for(int i = 0; i < input.size(); i++) { cin >> input[i].second.second >> input[i].second.first; input[i].first = input[i].second.second + input[i].second.first; } sort(input.begin(), input.end()); dp[0][0] = 1; int ans = 0; for(int i = 0; i < N; i++) { for(int j = 0; j <= 10000; j++) { if(dp[i][j]) { int next = j + input[i].second.second; if(j < input[i].second.first) { ans = max(ans, next); if(next <= 10000) { dp[i + 1][next] = 1; } } dp[i + 1][j] = 1; } } } cout << ans << endl; }