#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cmath>
#include <algorithm>
#include <bitset>
#include <random>
using namespace std;

#define int long long

struct Sword {
    int s, c;
};

const int inf = 1e18 + 10;
const int Mx = 1e6 + 10;
Sword A[Mx];
int Hs[Mx], Prs[Mx];
map <int, int> Best;
int N, M, K, X;

bool cmp (Sword s1, Sword s2) {
    if (s1.s != s2.s) {
        return s1.s < s2.s;
    }
    return s1.c < s2.c;
}

signed main() {
    cin >> N >> M >> K >> X;
    for (int i = 1; i <= N; i++) {
        int h, c;
        cin >> h >> c;
        Hs[i] = h;
        Prs[i] = Prs[i-1] + c;
    }
    for (int i = 1; i <= M; i++) {
        cin >> A[i].s >> A[i].c;
    }
    sort(A + 1, A + M + 1, cmp);
    int best = inf;
    for (int i = M; i >= 1; i--) {
        best = min(best, A[i].c);
        Best[A[i].s] = best;
    }
    int curS = 0;
    for (int i = 1; i <= N; i++) {
        X -= Best[Hs[i]];
        if (X < 0) {
            cout << "No";
            return 0;
        }
    }
    cout << "Yes";
}

