#include <iostream>
#include <vector>
using namespace std;

struct ISLAND
{
	int treasure;
	int bridge;
};

int main()
{
	int n;
	while (cin >> n)
	{
		if (n == 0) break;
		vector<ISLAND> island;
		ISLAND temp;
		for (int i = 0; i < n; i++)
		{
			cin >> temp.treasure >> temp.bridge;
			island.push_back(temp);
		}

		//bridge基準でバブルソート、bridge小さいほうが若く
		for (int i = 0; i < n - 1; i++)
		{
			for (int j = n - 1; j > i; j--)
			{
				if(island[j].bridge < island[j - 1].bridge)
				{
					ISLAND temp;
					temp = island[j];
					island[j] = island[j - 1];
					island[j - 1] = temp;
				}
			}
		}

		int burden = 0;
		bool flag = true;
		for (int i = 0; i < n; i++)
		{
			burden += island[i].treasure;
			if (burden > island[i].bridge)
			{
				cout << "No" << endl;
				flag = false;
				break;
			}
		}
		if (flag)
		{
			cout << "Yes" << endl;
		}
	}

	return 0;
}