#include #define rep(i, a, n) for(int i = a; i < n; i++) #define int long long using namespace std; const int INF = 1e15; const int MAX = 100010; int a[110], b[110]; int dp[MAX], nxt[MAX]; signed main(){ int n; cin >> n; rep(i, 0, n){ cin >> a[i] >> b[i]; } rep(i, 0, MAX) dp[i] = INF; dp[0] = 0; rep(i, 0, n){ rep(j, 0, MAX) nxt[j] = INF; rep(j, 0, MAX){ nxt[j] = min(nxt[j], dp[j] + b[i]); if(j + a[i] >= MAX) continue; nxt[j + a[i]] = min(nxt[j + a[i]], dp[j]); } swap(dp, nxt); } int ans = INF; rep(i, 0, MAX) ans = min(ans, max(i, dp[i])); cout << ans << endl; }