#include <bits/stdc++.h>
using namespace std;
struct bridge {
  int qual;
  int max_w;
};
bool bf(int nowW, bool vis[], const vector<bridge> &br) {
  int nVisitable = 0;
  for (int i = 0; i < br.size(); ++i) {
    if (!vis[i]) {
      nVisitable++;
      if (nowW > br[i].max_w) {
        return false;
      }
    }
  }
  if (nVisitable == 0) return true;
  for (int i = 0; i < br.size(); ++i) {
    if (!vis[i] && nowW <= br[i].max_w && nowW + br[i].qual <= br[i].max_w) {
      vis[i] = true;
      if (bf(nowW + br[i].qual, vis, br)) return true;
      vis[i] = false;
    }
  }
  return false;
}
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);
    }
    cout << (bf(0, visi, brs) ? "Yes" : "No") << endl;
  }
  return 0;
}
