#include <bits/stdc++.h>
using namespace std;
int takara[25];
int hashi[25];
int n;
bool recur(vector<int> land, int w) {
  if (land.empty()) return true;
  for (auto i : land) {
    if (w + takara[i] > hashi[i]) continue;
    auto new_land = land;
    new_land.erase(std::remove(new_land.begin(), new_land.end(), i),
                   new_land.end());
    if (recur(new_land, w + takara[i])) return true;
  }
  return false;
}
int main() {
  while (true) {
    cin >> n;
    if (n == 0) break;
    for (int i = 0; i < n; ++i) cin >> takara[i] >> hashi[i];
    vector<int> land(n);
    iota(land.begin(), land.end(), 0);
    cout << (recur(land, 0) ? "Yes" : "No") << endl;
  }
  return 0;
}
