#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m, k, q;
  cin >> n >> m >> k >> q;
  vector<int> rowvals, safecol;
  map<int, set<int>> treasure;
  for (int w = 0; w < k; w++) {
    int a, b;
    cin >> a >> b;
    treasure[a].insert(b);
  }
  treasure[1].insert(1);
  for (int w = 0; w < q; w++) {
    int a;
    cin >> a;
    safecol.push_back(a);
  }
  sort(safecol.begin(), safecol.end());
  auto it = treasure.begin();
  vector<vector<int>> extreme;
  while (it != treasure.end()) {
    rowvals.push_back(it->first);
    extreme.push_back({*(it->second).begin(), *(it->second).rbegin()});
    it++;
  }
  int sz = extreme.size();
  if (sz == 1) {
    cout << extreme[0][1] - 1 << "\n";
    return 0;
  }
  long long dp[sz][2];
  dp[sz - 1][0] = 0;
  dp[sz - 1][1] = 0;
  for (int w = sz - 2; w >= 0; w--) {
    for (int e = 0; e < 2; e++) {
      dp[w][e] = 1e15;
      auto it = lower_bound(safecol.begin(), safecol.end(), extreme[w][e]);
      if (it != safecol.end()) {
        int r = *it;
        long long sum = r - extreme[w][e] + rowvals[w + 1] - rowvals[w];
        long long toadd = dp[w + 1][1] + abs(r - extreme[w + 1][0]) +
                          extreme[w + 1][1] - extreme[w + 1][0];
        toadd = min(toadd, dp[w + 1][0] + abs(r - extreme[w + 1][1]) +
                               extreme[w + 1][1] - extreme[w + 1][0]);
        dp[w][e] = min(dp[w][e], sum + toadd);
      }
      if (it != safecol.begin()) {
        it--;
        int r = *it;
        long long sum = extreme[w][e] - r + rowvals[w + 1] - rowvals[w];
        long long toadd = dp[w + 1][1] + abs(r - extreme[w + 1][0]) +
                          extreme[w + 1][1] - extreme[w + 1][0];
        toadd = min(toadd, dp[w + 1][0] + abs(r - extreme[w + 1][1]) +
                               extreme[w + 1][1] - extreme[w + 1][0]);
        dp[w][e] = min(dp[w][e], sum + toadd);
      }
      assert(dp[w][e] != 1e15);
    }
  }
  cout << extreme[0][1] - extreme[0][0] + dp[0][1] << "\n";
  return 0;
}
