#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, int> pli;
const ll INF = 1e18;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
vector<ll> a(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
vector<vector<pair<int, ll>>> adj(n + 1);
for (int i = 0; i < m; i++) {
int u, v;
ll w;
cin >> u >> v >> w;
adj[u].emplace_back(v, w);
adj[v].emplace_back(u, w);
}
vector<vector<ll>> dist(n + 1, vector<ll>(3, INF));
priority_queue<pair<ll, pair<int, int>>,
vector<pair<ll, pair<int, int>>>,
greater<pair<ll, pair<int, int>>>> pq;
dist[1][0] = 0;
pq.push({0, {1, 0}});
while (!pq.empty()) {
auto [cost, info] = pq.top();
pq.pop();
int u = info.first;
int state = info.second;
if (cost != dist[u][state]) continue;
for (auto [v, w] : adj[u]) {
if (dist[v][state] > cost + w) {
dist[v][state] = cost + w;
pq.push({dist[v][state], {v, state}});
}
}
if (state == 0) {
if (dist[u][1] > cost + a[u]) {
dist[u][1] = cost + a[u];
pq.push({dist[u][1], {u, 1}});
}
}
else if (state == 1) {
if (dist[u][2] > cost - a[u]) {
dist[u][2] = cost - a[u];
pq.push({dist[u][2], {u, 2}});
}
}
}
ll ans = min({dist[n][0], dist[n][1], dist[n][2]});
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBwYWlyPGxsLCBpbnQ+IHBsaTsKCmNvbnN0IGxsIElORiA9IDFlMTg7CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgbiwgbTsKICAgIGNpbiA+PiBuID4+IG07CgogICAgdmVjdG9yPGxsPiBhKG4gKyAxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQoKICAgIHZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsIGxsPj4+IGFkaihuICsgMSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGxsIHc7CiAgICAgICAgY2luID4+IHUgPj4gdiA+PiB3OwogICAgICAgIGFkalt1XS5lbXBsYWNlX2JhY2sodiwgdyk7CiAgICAgICAgYWRqW3ZdLmVtcGxhY2VfYmFjayh1LCB3KTsKICAgIH0KCiAgICB2ZWN0b3I8dmVjdG9yPGxsPj4gZGlzdChuICsgMSwgdmVjdG9yPGxsPigzLCBJTkYpKTsKCgogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsbCwgcGFpcjxpbnQsIGludD4+LCAKICAgICAgICAgICAgICAgICAgIHZlY3RvcjxwYWlyPGxsLCBwYWlyPGludCwgaW50Pj4+LAogICAgICAgICAgICAgICAgICAgZ3JlYXRlcjxwYWlyPGxsLCBwYWlyPGludCwgaW50Pj4+PiBwcTsKCiAgICBkaXN0WzFdWzBdID0gMDsKICAgIHBxLnB1c2goezAsIHsxLCAwfX0pOwoKICAgIHdoaWxlICghcHEuZW1wdHkoKSkgewogICAgICAgIGF1dG8gW2Nvc3QsIGluZm9dID0gcHEudG9wKCk7CiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgaW50IHUgPSBpbmZvLmZpcnN0OwogICAgICAgIGludCBzdGF0ZSA9IGluZm8uc2Vjb25kOwoKICAgICAgICBpZiAoY29zdCAhPSBkaXN0W3VdW3N0YXRlXSkgY29udGludWU7CgogICAgICAgIGZvciAoYXV0byBbdiwgd10gOiBhZGpbdV0pIHsKICAgICAgICAgICAgaWYgKGRpc3Rbdl1bc3RhdGVdID4gY29zdCArIHcpIHsKICAgICAgICAgICAgICAgIGRpc3Rbdl1bc3RhdGVdID0gY29zdCArIHc7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtkaXN0W3ZdW3N0YXRlXSwge3YsIHN0YXRlfX0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhdGUgPT0gMCkgewoKICAgICAgICAgICAgaWYgKGRpc3RbdV1bMV0gPiBjb3N0ICsgYVt1XSkgewogICAgICAgICAgICAgICAgZGlzdFt1XVsxXSA9IGNvc3QgKyBhW3VdOwogICAgICAgICAgICAgICAgcHEucHVzaCh7ZGlzdFt1XVsxXSwge3UsIDF9fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IAogICAgICAgIGVsc2UgaWYgKHN0YXRlID09IDEpIHsKCiAgICAgICAgICAgIGlmIChkaXN0W3VdWzJdID4gY29zdCAtIGFbdV0pIHsKICAgICAgICAgICAgICAgIGRpc3RbdV1bMl0gPSBjb3N0IC0gYVt1XTsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2Rpc3RbdV1bMl0sIHt1LCAyfX0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0KCgogICAgbGwgYW5zID0gbWluKHtkaXN0W25dWzBdLCBkaXN0W25dWzFdLCBkaXN0W25dWzJdfSk7CiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9