#include <bits/stdc++.h>
using namespace std;
const int maxn = 100 + 10;
const int oo = 1 << 29;
int dist[maxn][maxn], A[maxn], N, D;
pair<int, int> P[maxn];
int get(pair<int, int> a, pair<int, int> b) {
  return abs(a.first - b.first) + abs(a.second - b.second);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> D;
  for (int i = 1; i < N - 1; i++) cin >> A[i];
  for (int i = 0; i < N; i++) cin >> P[i].first >> P[i].second;
  for (int i = 0; i < N; i++)
    for (int j = 0; j < N; j++) dist[i][j] = oo;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      if (i == j)
        dist[i][j] = 0;
      else {
        dist[i][j] = get(P[i], P[j]) * D - A[j];
      }
    }
  }
  for (int k = 0; k < N; k++)
    for (int i = 0; i < N; i++)
      for (int j = 0; j < N; j++) {
        dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
      }
  cout << dist[0][N - 1] << '\n';
  return 0;
}
