#include using namespace std; int dp[2][100001]; int main(void) { cin.tie(0); ios::sync_with_stdio(false); int t; t = 1; while (t--) { int n, a, b; vector > v; cin >> n; for (int i = 0; i < n; i++) { cin >> a >> b; v.push_back(make_pair(a, b)); } dp[1][0] = 0; for (int i = 0; i < n; i++) { for (int j = 0; j <= 100000; j++) { dp[0][j] = dp[1][j]; dp[1][j] = 1e9; } for (int j = 0; j <= 100000; j++) { if (j + v[i].first <= 100000) { dp[1][j + v[i].first] = min(dp[1][j + v[i].first], dp[0][j]); } dp[1][j] = min(dp[1][j], dp[0][j] + v[i].second); } } int res = 1e9; for (int i = 0; i <= 100000; i++) { res = min(res, max(i, dp[1][i])); } cout << res << '\n'; } return 0; }