#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n, k, s, t, x, y, i, p, c, z, t1;
  cin >> n;
  cin >> k;
  cin >> s;
  cin >> t;
  pair<long long, long long> auti[n];
  for (i = 0; i < n; i++) {
    scanf("%I64d", &x);
    scanf("%I64d", &y);
    auti[i].first = x;
    auti[i].second = y;
  }
  sort(auti, auti + n);
  long long benzinske[k + 2];
  benzinske[0] = 0;
  benzinske[k + 1] = s;
  k++;
  for (i = 1; i < k; i++) {
    cin >> benzinske[i];
  }
  sort(benzinske, benzinske + (k + 1));
  long long razlika[k], razlika1[k];
  for (i = 1; i < k + 1; i++) {
    razlika[i - 1] = benzinske[i] - benzinske[i - 1];
  }
  sort(razlika, razlika + k);
  c = razlika[k - 1];
  t1 = 2 * s;
  p = 0;
  for (i = 0; i < k; i++) {
    if (razlika[i] * 2 < c) {
      p = i + 1;
      t1 = t1 - razlika[i];
    } else {
      t1 = t1 - (c - razlika[i]);
    }
  }
  while (t1 > t) {
    z = k - p;
    x = razlika[p];
    y = 2 * x - c;
    if (z * y >= t1 - t) {
      c = c + (t1 - t) / z;
      if ((t1 - t) % z != 0) c++;
      break;
    } else {
      t1 = t1 - y * z;
      c = 2 * x;
      p++;
    }
  }
  z = 0;
  for (i = 0; i < n; i++) {
    if (auti[i].second >= c) {
      cout << auti[i].first << endl;
      z = 1;
      break;
    }
  }
  if (z == 0) {
    cout << -1 << endl;
  }
  return 0;
}
