#include <bits/stdc++.h>
using namespace std;

int main() {
  int64_t C, M, T;
  cin >> C >> M >> T;

  int64_t time = 0;
  int64_t cap = C;
  for (int i = 0; i < M; ++i) {
    int64_t start, end;
    cin >> start >> end;

    cap -= (start - time);
    if (cap <= 0) {
      cout << "No" << endl;
      return 0;
    }

    cap += (end - start);
    cap = min(cap, C);

    time = end;
  }
  cap -= (T - time);
  if (cap <= 0) {
    cout << "No" << endl;
  } else {
    cout << "Yes" << endl;
  }
}
#include<iostream>
#include<cstring>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long LL;
const int N=3e3+10; 
struct Node{
	int x,v;
	bool operator<(const Node& a)const{
		return x<a.x;
	}
}node[N<<1];
int main(){
	int n,m,t;
	cin>>n>>m>>t;
	int cnt=0;
	for(int i=1;i<=m;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		node[++cnt]={x,2};
		node[++cnt]={y,-2};
	}
	node[++cnt]={0,0};
	node[++cnt]={t,0};
	sort(node+1,node+1+cnt);
	int res=-1,ans=n;
	for(int i=1;i<=cnt;i++){
		res+=node[i].v;
		if(node[i].x!=node[i+1].x){
			ans+=(node[i+1].x-node[i].x)*res;
			ans=min(n,ans);
			if(ans<=0)return puts("No"),0; 
		}
	}
	return puts("Yes"),0;
	
}