#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-8;
vector<pair<int, int> > car;
vector<int> o;
int main() {
  int n, k, s, t;
  cin >> n >> k >> s >> t;
  int x, y;
  for (int i = 0; i < n; ++i) {
    scanf("%d%d", &x, &y);
    car.push_back({y, x});
  }
  k += 2;
  o.assign(k, 0);
  o[0] = 0;
  o[k - 1] = s;
  for (int i = 1; i < k - 1; ++i) {
    scanf("%d", &o[i]);
  }
  sort(o.begin(), o.end());
  sort(car.begin(), car.end());
  int l = 0, r = n - 1;
  while (l <= r) {
    int mid = (l + r) / 2;
    long double v = car[mid].first, time = 0;
    bool f = 1;
    for (int i = 0; i < k - 1; ++i) {
      long double dis = o[i + 1] - o[i];
      if (dis > v) {
        f = 0;
        break;
      }
      long double ll = 0, rr = dis;
      while (rr - ll > EPS) {
        long double m2 = (ll + rr) / 2;
        if (v - m2 - (dis - m2) * 2 < 0)
          ll = m2;
        else
          rr = m2;
      }
      time += (ll * 2) + (dis - ll);
    }
    if (f && (long double)time <= t)
      r = mid - 1;
    else
      l = mid + 1;
  }
  int ans = 2e9;
  for (int i = r + 1; i < n; ++i) ans = min(ans, car[i].second);
  if (ans == 2e9)
    cout << -1;
  else
    cout << ans;
  return 0;
}
