N = int(input()) inf = float("inf") dp = [inf] * (N*1000+1) dp[0] = 0 for i in range(N): ndp = [inf] * len(dp) A,B = map(int,input().split()) for j in range(len(dp)-1,-1,-1): if dp[j] == inf: continue ndp[j+A] = min(ndp[j+A], dp[j]) ndp[j] = min(ndp[j], dp[j] + B) dp = ndp ans = float("inf") for i in range(len(dp)): ans = min(ans, max(i,dp[i])) print (ans)