#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

struct bridge{
  int qual;
  int max_w;
  bool operator<(const bridge &br)const{
    return max_w < br.max_w;
  }
};

int main(){
  while(true){
    int n;
    bool visi[26]={false,};
    vector<bridge> brs;
    cin >> n;
    if(n==0)break;
    for(int i = 0; i < n; ++i){
      bridge br;
      cin >> br.qual >> br.max_w;
      brs.push_back( br );
    }
    int nowW = 0;
    bool bSucceeded = true;
    sort( brs.begin(), brs.end() );
    for(int i = 0; i < brs.size(); ++i){
      if( nowW + brs[i].qual <= brs[i].max_w )
	nowW += brs[i].qual;
      else{
	bSucceeded = false;
	break;
      }
    }
    cout << ( ( bSucceeded ) ? "Yes" : "No" ) << endl;
  }
  return 0;
}