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