#include <iostream>
using namespace std;
int main()
{
	int N, M, T;
	cin>>N>>M>>T;
	int max=N;
	int A=0,B=0,C=0;
	for(int i=0;i<M;i++)
	{
		cin>>A;
		N=N-(B>A?(B-A):(A-B));
		if(N<=0)
			break;
		cin>>B;
		N=N+(B-A);
		if(N>max)
			N=max;
	}
	N=N-(T-B);
	if(N>0)
		cout<<"Yes";
	else 
		cout<<"No";
	return 0;
}
#include <bits/stdc++.h>
using namespace std;

/*
提出前に確認!
- 配列は+10ぐらい余分にとっておく
- setとmultisetを間違えない
*/

/*
デバッグ時にチェック!
- RE
	配列の取りうる最大値、最小値を**すべて**チェックする
*/

int	main(void)
{
	int n, m, t;
	cin >> n >> m >> t;
	int now = n;
	int pre = 0;
	for (int i = 0; i < m; i++)
	{
		int a, b;
		cin >> a >> b;
		now -= a - pre;
		if (now <= 0)
		{
			cout << "No" << endl;
			return (0);
		}
		now += b - a;
		now = min(now, n);
		pre = b;
	}
	now -= t - pre;
	if (now <= 0) cout << "No" << endl;
	else cout << "Yes" << endl;
	return (0);
}
