program main
implicit none
integer :: n
integer , allocatable :: a(:), b(:)
integer :: i, j, s

read(*,*) n
allocate( a(n) )
allocate( b(n) )
do i = 1, n
   read(*,*) a(i), b(i)
end do
call quicksort2(n, b, a, 1, n)
s = 0.
do i = 1, n
   s = s + a(i)
   if(s .gt. b(i) ) then
      write(*,*) 'No'
      stop
   end if
end do
write(*,*) 'Yes'

stop
contains

recursive subroutine quicksort2(n, a, b, first, last)
  implicit none
  integer :: a(n), b(n)
  integer :: first, last
  integer ::  i, j, n
  integer ::  x, y, t, s
  
  x = a( (first+last) / 2 )
  i = first
  j = last
  do
     do while (a(i) < x)
        i=i+1
     end do
     do while (x < a(j))
        j=j-1
     end do
     if (i >= j) exit
     t = a(i)
    a(i) = a(j)
    a(j) = t
    s = b(i)
    b(i) = b(j)
    b(j) = s
    i=i+1
    j=j-1
  end do
  if (first < i - 1) call quicksort2(n, a, b, first, i - 1)
  if (j + 1 < last)  call quicksort2(n, a, b, j + 1, last)
end subroutine quicksort2

end program main
