#include using namespace std; int main() { cin.tie(0); ios::sync_with_stdio(false); int N; cin >> N; vector dp(N * 1000 + 1, N * 1005); vector dp_new(N * 1000 + 1, N * 1005); dp[0] = 0; for (int i = 0; i < N; ++i){ int a, b; cin >> a >> b; for (int t = 0; t <= N * 1000; ++t){ if (t + a < dp_new.size()) dp_new[t + a] = min(dp_new[t + a], dp[t]); dp_new[t] = min(dp_new[t], dp[t] + b); } swap(dp_new, dp); dp_new.assign(N * 1000 + 1, N * 1005); } int ans = N * 1005; for (int i = 0; i < dp.size(); ++i){ ans = min(ans, max(i, dp[i])); } cout << ans << endl; return 0; }