n = int(input()) vt = [tuple(map(int, input().split())) for _ in range(n)] vt.sort(key = lambda item: item[0] + item[1]) dp = 1 mask0 = (2 ** 30000) - 1 for v, t in vt: mask = (1 << t) - 1 dp = dp | (dp & mask) << v dp &= mask0 for i in range(dp.bit_length())[::-1]: if dp >> i & 1: ans = i break print(ans)