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

const int inf = 1e18;

struct pa{
    int s, c;
};

bool operator<(pa a, pa b){
    return a.s > b.s;
}

bool solve(){
    int n, m, k, x;
    cin >> n >> m >> k >> x;
    vector<int> h(n), pr(n + 1);
    pr[0] = x;
    for(int i = 0; i < n; ++i){
        cin >> h[i] >> pr[i + 1];
        pr[i + 1] += pr[i];
    }
    vector<pa> s(m);
    for(int i = 0; i < m; ++i){
        cin >> s[i].s >> s[i].c;
    }
    sort(s.begin(), s.end());
    vector<pa> t;
    int c = inf;
    for(auto &v : s){
        if(v.c < c){
            c = v.c;
            t.push_back(v);
        }
    }
    reverse(t.begin(), t.end());
    for(int &x : h){
        auto p = lower_bound(t.begin(), t.end(), (pa){x, 0});
        if(p == t.end()){
            return 0;
        }
        x = p->c;
    }
    vector<int> dp(n + 1, inf);
    dp[0] = 0;
    for(int i = 0; i < n; ++i){
        int m = 0;
        for(int j = i; j < min(n, i + k); ++j){
            m = max(m, h[j]);
            if(dp[i] + m > pr[i]) break;
            dp[j + 1] = min(dp[j + 1], dp[i] + m);
        }
    }
    return dp[n] <= pr[n];
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    if(solve()){
        cout << "Yes" << endl;
    }
    else cout << "No" << endl;
    return 0;
}