N = int(input()) A_li = [0] B_li = [0] aa = bb = 0 for i in range(N): a,b = map(int,input().split()) A_li.append(a) B_li.append(b) aa += a bb += b ma = max(aa,bb) dp = [[0 for i in range(ma+1)] for j in range(N+1)] for i in range(1,N+1): weight = A_li[i] value = B_li[i] for j in range(1,ma+1): if j < weight: dp[i][j] = dp[i-1][j] else: dp[i][j] = max(dp[i-1][j], (dp[i-1][j-weight]+value)) ans = 10**20 for j in range(1,ma+1): ans1 = max(j, (bb - dp[N][j])) ans = min(ans,ans1) print(ans)