#include <bits/stdc++.h>
using namespace std;
vector<int> dist;
int check(int fuel) {
  int total = 0;
  for (int dis : dist) {
    if (fuel < dis) return INT_MAX;
    total += max(dis, 3 * dis - fuel);
  }
  return total;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, k, s, t, lo = 1, hi = 0, res = INT_MAX;
  cin >> n >> k >> s >> t;
  vector<vector<int>> car(n, vector<int>(2));
  for (int i = 0; i < n; ++i) {
    cin >> car[i][0] >> car[i][1];
    hi = max(hi, car[i][1]);
  }
  vector<int> station(k + 2);
  station[0] = 0;
  station.back() = s;
  for (int i = 1; i <= k; ++i) cin >> station[i];
  sort(station.begin(), station.end());
  for (size_t i = 1; i < station.size(); ++i)
    dist.push_back(station[i] - station[i - 1]);
  if (check(hi) > t) {
    cout << -1 << endl;
    return 0;
  }
  while (lo < hi) {
    int mid = (lo + hi) / 2;
    if (check(mid) > t)
      lo = mid + 1;
    else
      hi = mid;
  }
  for (int i = 0; i < n; ++i) {
    if (car[i][1] >= lo) res = min(res, car[i][0]);
  }
  cout << res << endl;
  return 0;
}
