#include <bits/stdc++.h>
using namespace std;
inline long long getnum() {
  char c = getchar();
  long long num, sign = 1;
  for (; c < '0' || c > '9'; c = getchar())
    if (c == '-') sign = -1;
  for (num = 0; c >= '0' && c <= '9';) {
    c -= '0';
    num = num * 10 + c;
    c = getchar();
  }
  return num * sign;
}
long long A[200004][2], B[200004];
int main() {
  long long n = getnum(), k = getnum(), d = getnum(), tim = getnum();
  for (int i = 1; i <= n; i++) {
    A[i][0] = getnum();
    A[i][1] = getnum();
  }
  for (int i = 1; i <= k; i++) B[i] = getnum();
  sort(B + 1, B + k + 1);
  k++;
  B[k] = d;
  int l = 1, r = 1000000007LL;
  while (l < r) {
    int m = (l + r) / 2;
    long long req = 0;
    for (int i = 1; i <= k; i++) {
      if ((B[i] - B[i - 1]) * 2 <= m)
        req += B[i] - B[i - 1];
      else if ((B[i] - B[i - 1]) > m) {
        req = LLONG_MAX;
        break;
      } else {
        long long a = m - (B[i] - B[i - 1]);
        long long b = (B[i] - B[i - 1]) - a;
        req += a + b * 2;
      }
    }
    if (req <= tim)
      r = m;
    else
      l = m + 1;
  }
  long long ans = LLONG_MAX;
  for (int i = 1; i <= n; i++) {
    if (A[i][1] >= r) ans = min(ans, A[i][0]);
  }
  if (ans == LLONG_MAX) ans = -1;
  cout << ans;
}
