#include <bits/stdc++.h>
using namespace std;
int n, s, k, t;
int c[300000], v[300000], d[300000];
bool check(int v) {
  long long sum = 0;
  for (int i = 1; i <= k; i++) {
    int dis = d[i] - d[i - 1];
    long long x = v - dis, y = 2 * dis - v;
    if (x < 0) return 0;
    if (y < 0)
      sum += dis;
    else
      sum += x + 2 * y;
  }
  return (sum <= t);
}
int main() {
  scanf("%d%d%d%d", &n, &k, &s, &t);
  for (int i = 1; i <= n; i++) scanf("%d%d", &c[i], &v[i]);
  for (int i = 1; i <= k; i++) scanf("%d", &d[i]);
  d[++k] = s;
  sort(d + 1, d + k + 1);
  long long l = 0, mid = 0, r = 3000000000, ans = 3000000000, V = 3000000000;
  while (l < r) {
    mid = (l + r) / 2;
    if (check(mid))
      r = V = mid;
    else
      l = mid + 1;
  }
  for (int i = 1; i <= n; i++)
    if (v[i] >= V) ans = min(ans, (long long)c[i]);
  if (ans == 3000000000)
    printf("-1");
  else
    printf("%lld\n", ans);
}
