#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;

template <typename T>
using indexed_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <class T> bool umin(T &a, const T &b) {
    return b < a ? a = b, 1 : 0;
}
template <class T> bool umax(T &a, const T &b) {
    return a < b ? a = b, 1 : 0;
}

#define int  long long
#define ll   long long
#define ld   long double
#define pb   push_back
#define mp   make_pair
#define in   insert
#define fi   first
#define se   second
#define lb   lower_bound
#define ub   upper_bound
#define prec fixed << setprecision(20)
#define sz(v)         (int)(v.size())
#define all(x)        x.begin(), x.end()
#define allr(x)       x.rbegin(), x.rend()
#define mem(a, s)     memset(a, s, sizeof(a))
#define rep(i, a, b)  for (int i = a; i <= b; ++i)
#define repr(i, a, b) for (int i = a; i >= b; --i)
#define MAX  8000000000000000064LL
#define MIN  -8000000000000000064LL

typedef vector<int> vi;
typedef stack<int> sti;
typedef queue<int> qi;
typedef pair<int, int> pii;
typedef set<int> si;
typedef map<int, int> mii;
typedef vector<pii> vpi;
typedef priority_queue<int> pqmax;
typedef priority_queue<int, vector<int>, greater<int> > pqmin;

const int mod = 1e9 + 7;
const int inf = 1e18;
const int d4x[4] = { -1, 0, 1, 0 }, d4y[4] = { 0, 1, 0, -1 };
const int d8x[8] = { -1, -1, 0, 1, 1, 1, 0, -1 },
          d8y[8] = { 0, 1, 1, 1, 0, -1, -1, -1 };

void solve();

int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int t = 1;

    // cin >> t;
    rep(i, 1, t) {
        // cout << "Case #" << i << ": ";
        solve();
    }
    return 0;
}

void solve() {
    int n, m, t;

    cin >> n >> m >> t;
    int start = n;

    vector<pii> v(m);

    rep(i, 0, m - 1) cin >> v[i].fi >> v[i].se;
    start -= v[0].fi;
    if (start <= 0) {
        cout << "No\n";
        return;
    }
    start += (v[0].se - v[0].fi);
    if (start > n) start = n;
    rep(i, 1, m - 1) {
        start -= (v[i].fi - v[i - 1].se);
        if (start <= 0) {
            cout << "No\n";
            return;
        }
        start += (v[i].se - v[i].fi);
        if (start > n) start = n;
    }
    start -= (t - v[m - 1].se);
    if (start > 0) cout << "Yes\n";
    else cout << "No\n";
} // solve

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

const int maxm=1010;

int N,n,m,t,a[maxm],b[maxm];

int main()
{
	scanf("%d%d%d",&n,&m,&t);N=n;
	for(int i=1;i<=m;i++) scanf("%d%d",&a[i],&b[i]);

	a[0]=b[0]=0;
	a[m+1]=t;

	for(int i=1;i<=m+1;i++)
	{
		n-=a[i]-b[i-1];
		if(n<=0) return !printf("No");

		n+=b[i]-a[i];
		n=min(n,N);
	}

	printf("Yes");
	
	return 0;
}