#include <bits/stdc++.h>
using namespace std;
int n, m, k, q;
int top;
int r[200001], c[200001];
int le[200001], ri[200001];
int b[200001];
int tmp[10];
vector<pair<long long, long long> > vec1;
vector<pair<long long, long long> > vec2;
int main() {
  scanf("%d%d%d%d", &n, &m, &k, &q);
  le[1] = ri[1] = 1, top = 1;
  for (int i = 1; i <= k; i++) {
    scanf("%d%d", &r[i], &c[i]);
    top = max(r[i], top);
    if (le[r[i]] == 0)
      le[r[i]] = c[i];
    else
      le[r[i]] = min(le[r[i]], c[i]);
    if (ri[r[i]] == 0)
      ri[r[i]] = c[i];
    else
      ri[r[i]] = max(ri[r[i]], c[i]);
  }
  for (int i = 1; i <= q; i++) scanf("%d", &b[i]);
  sort(b + 1, b + q + 1);
  vec1.push_back(pair<long long, long long>(1, 0));
  for (int i = 1; i <= top - 1; i++) {
    if (le[i] == 0 && ri[i] == 0) continue;
    vec2.clear();
    int cnt = 0;
    int p1 = lower_bound(b + 1, b + q + 1, le[i]) - b;
    if (p1 <= q) tmp[++cnt] = b[p1];
    if (p1 - 1 >= 1) tmp[++cnt] = b[p1 - 1];
    int p2 = lower_bound(b + 1, b + q + 1, ri[i]) - b;
    if (p2 <= q) tmp[++cnt] = b[p2];
    if (p2 - 1 >= 1) tmp[++cnt] = b[p2 - 1];
    sort(tmp + 1, tmp + cnt + 1);
    for (int j = 1; j <= cnt; j++) {
      long long now = tmp[j];
      long long res = 1e18;
      for (int k = 0; k < vec1.size(); k++) {
        pair<long long, long long> pp = vec1[k];
        long long pre = pp.first;
        long long sum = pp.second;
        if (now >= pre) {
          if (le[i] <= pre) sum += (pre - le[i]) * 2LL;
          if (ri[i] >= now) sum += (ri[i] - now) * 2LL;
          sum += (now - pre);
        } else {
          if (le[i] <= now) sum += (now - le[i]) * 2LL;
          if (ri[i] >= pre) sum += (ri[i] - pre) * 2LL;
          sum += (pre - now);
        }
        res = min(res, sum);
      }
      vec2.push_back(pair<long long, long long>(now, res));
    }
    vec1 = vec2;
  }
  long long ans = 1e18;
  for (int i = 0; i < (int)vec1.size(); i++) {
    long long sum = vec1[i].second;
    long long pre = vec1[i].first;
    if (le[top] <= pre && ri[top] <= pre)
      sum += pre - le[top];
    else if (le[top] <= pre && ri[top] >= pre)
      sum += min(ri[top] - pre, pre - le[top]) + ri[top] - le[top];
    else
      sum += (ri[top] - pre);
    ans = min(ans, sum);
  }
  printf("%lld\n", ans + top - 1);
}
