def dfs(state, s):
    if s == su: return 1
    if memo[state]: return 0
    memo[state] = 1
    for j, e in enumerate(D):
        if state & (1 << j) == 0 and s+e[0]<=e[1]:
            if dfs(state | (1 << j), s+e[0]):
                return 1
    return 0

while 1:
    n = input()
    if n==0: break
    memo = [0]*2**n
    D = [map(int, raw_input().split()) for i in xrange(n)]
    su = sum(e[0] for e in D)
    print "Yes"*dfs(0, 0)or"No"