#include <bits/stdc++.h>
using namespace std;
const int mx = 200 + 10;
long long int g[mx][mx];
long long int d[mx][mx];
long long int q[mx];
long long int x[mx], y[mx];
long long int inf = 1e17;
inline long long int abso(long long int v) { return v < 0 ? -v : v; }
int main() {
  int n;
  long long int kd;
  cin >> n >> kd;
  memset(q, 0, sizeof q);
  for (int i = 1; i < n - 1; i++) cin >> q[i];
  for (int i = 0; i < n; i++) cin >> x[i] >> y[i];
  for (int i = 0; i < 2 * n; i++)
    for (int j = 0; j < 2 * n; j++) g[i][j] = inf;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (i != j) g[i + n][j] = kd * (abso(x[j] - x[i]) + abso(y[j] - y[i]));
  for (int i = 0; i < n; i++) {
    g[i][i + n] = -q[i];
  }
  for (int k = 0; k < 2 * n; k++)
    for (int i = 0; i < 2 * n; i++)
      for (int j = 0; j < 2 * n; j++) g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
  long long int ans = g[0][n - 1 + n];
  cout << ans << endl;
  return 0;
}
