loop do
	n = gets.to_i
	break if n == 0
	a = (1..n).map {gets.split.map &:to_i}
	w_hash = {0 => 0}

	stack = [0]
	reached = {0 => 1}
	ok = false
	until stack.empty?
		scanned = stack.pop
		weight = w_hash[scanned]
		if scanned + 1 == (1 << n)
			ok = true
			break
		end

		added = []
		ok = true
		(0..n-1).each do |i|
			if scanned[i] == 0
				new_s = scanned | (1 << i)
				next if reached[new_s]
				new_w = weight + a[i][0]
				if new_w > a[i][1]
					ok = false
					break
				end
				added << [new_s, new_w]
			end
		end
		if ok 
			added.each do |s, w|
				reached[s] = 1
				w_hash[s] ||= w
				stack << s
			end
		end
	end

	puts ok ? 'Yes' : 'No'
end