#include <bits/stdc++.h>
using namespace std;
long long n, k, s, t;
vector<pair<long long, long long> > a;
vector<long long> g;
void read() {
  cin >> n >> k >> s >> t;
  a.resize(n);
  g.resize(k);
  for (long long i = 0; i < n; i++) {
    cin >> a[i].second >> a[i].first;
  }
  for (long long i = 0; i < k; i++) {
    cin >> g[i];
  }
  sort(a.begin(), a.end());
  sort(g.begin(), g.end());
  g.push_back(s);
}
long long ans = -1;
bool check(long long x) {
  long long time = 0;
  long long pos = 0;
  for (long long i = 0; i <= k; i++) {
    long long l = g[i] - pos;
    if (x >= 2 * l)
      time += l;
    else if (x >= l)
      time += 2 * l - (x - l);
    else
      return false;
    pos = g[i];
  }
  return time <= t;
}
void run() {
  long long l = 0, r = s, m;
  while (l < r - 1) {
    m = l + (r - l) / 2;
    if (check(m)) {
      r = m;
    } else {
      l = m;
    }
  }
  if (check(r - 1)) r--;
  ans = 1e14;
  for (auto i : a) {
    if (i.first >= r) {
      ans = min(ans, i.second);
    }
  }
  if (ans == 1e14) ans = -1;
  if (!check(r)) ans = -1;
}
void write() { cout << ans; }
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  read();
  run();
  write();
  return 0;
}
