#include <iostream>
#include <vector>
using namespace std;
int main(void){
    long long N,M,T;
    cin >> N >> M >> T;
    long long start, end, now, B;
    B = N;
    now = 0;
    for(int i=0;i<M;i++){
        cin >> start >> end;
        B -= start-now;
        if(B<=0){
            cout << "No";
            return 0;
        }
        // cout << B << endl;
        B = min(N, B+end-start);
        // cout << B << endl;
        now = end;
    }
    if(B-(T-now)<=0) cout << "No";
    else cout << "Yes";
    return 0;

}

		                         ///−In the name of God −///



//In mathematics, an unordered pair or pair set is a set of the form {a, b},
//i.e. a set having two elements a and b with no particular relation between them.
//In contrast, an ordered pair (a, b) has a as its first element and b as its second element.
//So, (a,b)!=(b,a) in ordered pair but it is in case of unordered pair.
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define   ll  long long int
#define   dl double
#define   llu unsigned long long int
#define   scll(x) scanf("%lld",&x)
#define   scld(x) scanf("%lf",&x)
#define   scull(x) scanf("%llu",&x)
#define   scch(x) scanf(" %c",&x)
#define   eb(x)   emplace_back(x)
#define   pb(x) push_back(x)
#define   pf(x) push_front(x)
#define   ppb() pop_back()
#define   ppf() pop_front()
#define   Pi acos(-1.0)
#define   inf 1000000000000000000
#define   mod 1000000007
#define   ff first
#define   ss second
#define   mpr make_pair
#define   debug(x) cout<<x<<'\n';
#define   MAX 1000000
#define   eps 1e-8
#define   nl  cout<<'\n'
#define   ump unordered_map
#define   mp  map
typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> indexed_multiset;
//Taking input by EOF
//while(scanf("%lld",&x)!=-1){ }
// Creates a min heap
//priority_queue <int, vector<int>, greater<int> > pq;
//sin((x*pi)/180.0)[x in degree]
//sin(x)[x in radian]
//asin(x)[radian]
//(asin(x)*180)/pi[degree]
//or(|)//and(&)//xor(^)//not(~)
//S.order_of_key(x)[Give me the position of x]
//S.find_by_order(x)[Give me the x th element in set]
//pair can no te used as index in Unordered_map 
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
//Knight moves
ll dx[8]={-2,-2,2,2,-1,-1,1,1};
ll dy[8]={1,-1,1,-1,2,-2,2,-2};
ll lcm(ll a, ll b) {return (a * b) / __gcd(a, b);}
int main()
{
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
#endif
  ll a, b, c = 0, d, e, f = 0, g, h, i, j = 0, k, m, n, o, p, s, t, v, w, x = 0, y, z, l, res = 0;
  ll cnt = 0, l1 = 0, l2, l3, c1 = 0, c2 = 0, c3 = 0, mx = 0, mn = inf;
  ll prevsum = 0, ans1 = 0, ans2 = 0, odd = 0, even = 0, hh, mm;
  string str, str1, str2, str3 = "", str4 = "";
  ll ide = 0, idx = 0, Q;
  ll xa, xy;
    

      /*scll(t);
      while(t--)
      {


      }*/

 scll(n);
 scll(m);
 scll(t);
 ll ans=n;
 ll prev=0;
 f=0;
for(i=0;i<m;i++)
{
  scll(a);
  ans-=a-prev;
  if(ans<=0)
  	{
  		f=1;
  	}
  scll(b);
 ans+=b-a;
 if(ans>n)
 	ans=n;
 prev=b;
}

ans-=t-prev;
if(ans<=0)
f=1;
//cout<<ans;

if(f)
	cout<<"No";
else
	cout<<"Yes";
  
return 0;
}