#include <bits/stdc++.h>
using namespace std;
const long long MAX = 200100;
const long long TOP = 2e9;
long long N, K, S, T;
long long C[MAX], V[MAX];
long long G[MAX], lo, hi;
long long g(long long v, long long d) {
  if (d > v) return TOP + 10;
  long long f = min(v - d, d);
  return f + (d - f) * 2;
}
bool p(long long v) {
  long long t = 0;
  t += g(v, G[0]);
  for (long long I = 0; I < K - 1; I++) t += g(v, G[I + 1] - G[I]);
  t += g(v, S - G[K - 1]);
  return t <= T;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> K >> S >> T;
  for (long long I = 0; I < N; I++) {
    cin >> C[I] >> V[I];
  }
  for (long long I = 0; I < K; I++) cin >> G[I];
  sort(G, G + K);
  if (S > T) {
    cout << -1 << endl;
    return 0;
  }
  lo = 1;
  hi = 2 * S;
  while (lo < hi) {
    long long mi = (lo + hi) / 2;
    if (p(mi))
      hi = mi;
    else
      lo = mi + 1;
  }
  long long sol = TOP + 10;
  for (long long I = 0; I < N; I++)
    if (V[I] >= lo) sol = min(sol, C[I]);
  if (sol > TOP) sol = -1;
  cout << sol << endl;
}
