1 1 2 2
1000000000 1000000000
1
 1 1 1000000000 1000000000
100 1000000000
1
 1 1 10 18
5 6
5
 2 1 1000000000 2000000000
111 999999999
101 999999998
1
 4 13 400 600
13 30
1 19
1 160
1 113
58 73 15 319 194 362 128 157 336 162 77 90 96
 1 15 100 200
283 8
30 58 16 45 80 82 55 95 24 23 86 28 51 47 20
 3 2 300 400
24 68
13 65
15 113
127 177
 1 1 2 1
1 10
1
 4 2 7 15
10 9
4 4
9 3
4 10
1 6
 2 1 1000000000 2000000000
111 1000000000
101 1000000000
5
 2 1 1000000000 2000000000
111 999999998
101 999999998
1
 1 1 1000000000 1000000000
1 1000000000
1

1000000000
 -1
 5
 111
 1
 -1
 -1
 -1
 4
 101
 -1
 -1

#include <bits/stdc++.h>
using namespace std;
int Set(int n, int pos) { return n = n | (1 << pos); }
int reset(int n, int pos) { return n = n & ~(1 << pos); }
bool check(int n, int pos) { return (bool)(n & (1 << pos)); }
long long int power(long long int x, long long int n) {
  if (n == 0)
    return 1;
  else if (n % 2 == 0) {
    long long int y = power(x, n / 2);
    return y * y;
  } else
    return x * power(x, n - 1);
}
int strTOint(string s) {
  stringstream second;
  int x;
  second << s;
  second >> x;
  return x;
}
double geo_dist(int a, int b, int c, int d) {
  double dd = (double)(a - c) * (a - c) + (b - d) * (b - d);
  double r = sqrt(dd) + 1e-9;
  return r;
}
long long int bigmod(long long int a, long long int p, long long int m) {
  if (p == 0) return 1 % m;
  if (p % 2 == 0) {
    long long int y = bigmod(a, p / 2, m);
    return (y * y) % m;
  } else {
    return (a * bigmod(a, p - 1, m)) % m;
  }
}
long long int x, y, d, g;
void ext_gcd(long long int a, long long int b) {
  if (b == 0) {
    x = 1;
    y = 0;
    d = a;
    return;
  }
  ext_gcd(b, a % b);
  long long int x1 = y;
  long long int y1 = x - (a / b) * y;
  x = x1;
  y = y1;
}
long long int modInv(long long int a, long long int m) {
  ext_gcd(a, m);
  x %= m;
  if (x < 0) x += m;
  return x;
}
vector<int> num;
void input(string s) {
  istringstream second(s);
  int n;
  while (second >> n) {
    num.push_back(n);
  }
}
int fx[] = {0, 0, -1, 1, -1, 1, 1, -1};
int fy[] = {1, -1, 0, 0, 1, 1, -1, -1};
map<string, int> mp;
vector<long long int> dist;
pair<long long int, long long int> cost[200010], cap[200010];
long long int gas[200010];
long long int n, k, s, t, len;
long long int func(long long int j) {
  long long int ans = 0;
  for (long long int i = 0; i < len; i++) {
    long long int temp = cap[j].first / dist[i];
    long long int m = cap[j].first % dist[i];
    if (temp >= 2)
      ans += dist[i];
    else if (temp == 1) {
      if (m == 0)
        ans += (dist[i] * 2);
      else {
        long long int res = (temp + 1) * dist[i];
        long long int p = res - cap[j].first;
        long long int q = dist[i] - p;
        p *= 2;
        ans += (p + q);
      }
    } else
      return -1;
  }
  return ans;
}
int binary() {
  long long int low = 0, high = n - 1;
  long long int mid;
  while (high - low > 5) {
    mid = (low + high) / 2;
    long long int khoroch = func(mid);
    if (khoroch > t || khoroch == -1)
      low = mid;
    else
      high = mid;
  }
  for (long long int i = low; i <= high; i++) {
    long long int khoroch = func(i);
    if (khoroch != -1 && khoroch <= t) return i;
  }
  return -1;
}
int main() {
  ios_base::sync_with_stdio(false);
  while (cin >> n >> k >> s >> t) {
    dist.clear();
    for (long long int i = 0; i < n; i++) {
      cin >> cost[i].first >> cost[i].second;
      cap[i].first = cost[i].second;
      cap[i].second = cost[i].first;
    }
    sort(cap, cap + n);
    for (long long int i = 0; i < k; i++) {
      cin >> gas[i];
    }
    sort(gas, gas + k);
    long long int prev = 0;
    for (long long int i = 0; i < k; i++) {
      dist.push_back(gas[i] - prev);
      prev = gas[i];
    }
    dist.push_back(s - prev);
    len = dist.size();
    long long int in = binary();
    if (in == -1) {
      cout << -1 << endl;
      continue;
    }
    long long int ans = 1e18;
    for (long long int i = in; i < n; i++) {
      if (cap[i].second <= ans) ans = cap[i].second;
    }
    cout << ans << endl;
  }
  return 0;
}
