#include <bits/stdc++.h>
using namespace std;
int n, m, k, q, vis[200009], myr[200009], myl[200009], safe[200009];
vector<int> v[200009], nextt;
long long ans1, ans2, prevl = 1, prevr = 1, lastr = 1;
void solve() {
  for (int i = 0; i < nextt.size(); i++) {
    long long ansleft = 1e15, ansright = 1e15;
    int cur = nextt[i];
    int l = v[cur][0], r = v[cur].back();
    int x1 = myr[prevl], x2 = myl[prevl];
    if (cur == 1) x1 = x2 = 1;
    int suml = abs(prevl - x1) + abs(x1 - l) + cur - lastr;
    int sumr = abs(prevl - x1) + abs(x1 - r) + cur - lastr;
    ansleft = min(ansleft, ans1 + sumr + abs(r - l));
    ansright = min(ansright, ans1 + suml + abs(l - r));
    suml = abs(prevl - x2) + abs(x2 - l) + cur - lastr;
    sumr = abs(prevl - x2) + abs(x2 - r) + cur - lastr;
    ansleft = min(ansleft, ans1 + sumr + abs(r - l));
    ansright = min(ansright, ans1 + suml + abs(l - r));
    x1 = myr[prevr], x2 = myl[prevr];
    if (cur == 1) x1 = x2 = 1;
    suml = abs(prevr - x1) + abs(x1 - l) + cur - lastr;
    sumr = abs(prevr - x1) + abs(x1 - r) + cur - lastr;
    ansleft = min(ansleft, ans2 + sumr + abs(r - l));
    ansright = min(ansright, ans2 + suml + abs(l - r));
    suml = abs(prevr - x2) + abs(x2 - l) + cur - lastr;
    sumr = abs(prevr - x2) + abs(x2 - r) + cur - lastr;
    ansleft = min(ansleft, ans2 + sumr + abs(r - l));
    ansright = min(ansright, ans2 + suml + abs(l - r));
    lastr = cur;
    prevl = l, prevr = r;
    ans1 = ansleft, ans2 = ansright;
  }
  cout << min(ans1, ans2);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k >> q;
  while (k--) {
    int x, y;
    cin >> x >> y;
    if (!vis[x]) nextt.push_back(x);
    v[x].push_back(y);
    vis[x]++;
  }
  int l = 1e9, r = 0;
  while (q--) {
    int x;
    cin >> x;
    l = min(l, x);
    r = max(r, x);
    safe[x]++;
  }
  for (int i = 1; i <= 200000; i++) {
    if (safe[i]) l = i;
    myl[i] = l;
  }
  for (int i = 200000; i >= 1; i--) {
    if (safe[i]) r = i;
    myr[i] = r;
  }
  sort(nextt.begin(), nextt.end());
  for (auto i : nextt) sort(v[i].begin(), v[i].end());
  solve();
}
