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)