import numpy as np

N = int(input())
AB = []
sumB = 0
for _ in range(N):
    a, b = map(int, input().split())
    sumB += b
    AB.append((a, b))

MAX = 10 ** 5 + 1

dp = np.zeros(MAX, dtype=int)
for a, b in AB:
    new_dp = dp.copy()
    new_dp[a:] = np.maximum(dp[a:], dp[:MAX - a] + b)
    dp = new_dp

ans = np.maximum(np.arange(MAX), sumB - dp).min()
print(ans)