#include <bits/stdc++.h>
#define pub push_back
#define FOR(i, l, r, x) for(int i = l; i <= r; i += x)
#define FOD(i, l, r, x) for(int i = l; i >= r; i -= x)
#define all(x) begin(x), end(x)
#define pii pair<int, int>
#define fi first
#define se second
#define int long long
using namespace std;
const int N = 1e5 + 5;
const int M = 350;
const int LOG = 19;
const int inf = 3e18;
struct node {int fi, se;};
struct cmp {
bool operator()(node &a, node &b) {
return a.se > b.se;
}
};
int n, m, c[N], d1[N], dn[N], D[N];
vector <pii> a[N];
void ditcha(int tu, int o) {
if (o == 1) memset(d1, 0x3f, sizeof(d1));
if (o == 2) memset(dn, 0x3f, sizeof(dn));
priority_queue <node, vector<node>, cmp> pq;
pq.push({tu, 0});
if (o == 1) d1[tu] = 0;
if (o == 2) dn[tu] = 0;
while(!pq.empty()) {
node tt = pq.top(); pq.pop();
int u = tt.fi;
int du = tt.se;
if (o == 1 && du > d1[u]) continue;
if (o == 2 && du > dn[u]) continue;
for(pii x : a[u]) {
int v = x.fi;
int w = x.se;
if (o == 1 && d1[v] > d1[u] + w) {
d1[v] = d1[u] + w;
pq.push({v, d1[v]});
}
if (o == 2 && dn[v] > dn[u] + w) {
dn[v] = dn[u] + w;
pq.push({v, dn[v]});
}
}
}
}
void ditchaDaLuong() {
memset(D, 0x3f, sizeof(D));
priority_queue <node, vector<node>, cmp> pq;
FOR(u, 1, n, 1) {
pq.push({u, c[u]});
D[u] = c[u];
}
while(!pq.empty()) {
node tt = pq.top(); pq.pop();
int u = tt.fi;
int du = tt.se;
for(pii x : a[u]) {
int v = x.fi;
int w = x.se;
if (D[v] > D[u] + w) {
D[v] = D[u] + w;
pq.push({v, D[v]});
}
}
}
}
void solve() {
cin >> n >> m;
FOR(i, 1, n, 1) cin >> c[i];
FOR(i, 1, m, 1) {
int u, v, w; cin >> u >> v >> w;
a[u].pub({v, w});
a[v].pub({u, w});
}
ditcha(1, 1);
ditcha(n, 2);
ditchaDaLuong();
int ans = inf;
FOR(v, 1, n, 1) {
int cost = (d1[v] + D[v] + dn[v]);
ans = min(ans, cost);
}
cout << ans << '\n';
}
signed main() {
#define name "baitap"
if (ifstream(name".inp")) {
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
}
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcHViIHB1c2hfYmFjawojZGVmaW5lIEZPUihpLCBsLCByLCB4KSBmb3IoaW50IGkgPSBsOyBpIDw9IHI7IGkgKz0geCkKI2RlZmluZSBGT0QoaSwgbCwgciwgeCkgZm9yKGludCBpID0gbDsgaSA+PSByOyBpIC09IHgpCiNkZWZpbmUgYWxsKHgpIGJlZ2luKHgpLCBlbmQoeCkKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGludCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gMWU1ICsgNTsKY29uc3QgaW50IE0gPSAzNTA7CmNvbnN0IGludCBMT0cgPSAxOTsKY29uc3QgaW50IGluZiA9IDNlMTg7CgpzdHJ1Y3Qgbm9kZSB7aW50IGZpLCBzZTt9OwpzdHJ1Y3QgY21wIHsKICAgIGJvb2wgb3BlcmF0b3IoKShub2RlICZhLCBub2RlICZiKSB7CiAgICAgICAgcmV0dXJuIGEuc2UgPiBiLnNlOwogICAgfQp9OwoKaW50IG4sIG0sIGNbTl0sIGQxW05dLCBkbltOXSwgRFtOXTsKdmVjdG9yIDxwaWk+IGFbTl07Cgp2b2lkIGRpdGNoYShpbnQgdHUsIGludCBvKSB7CiAgICBpZiAobyA9PSAxKSBtZW1zZXQoZDEsIDB4M2YsIHNpemVvZihkMSkpOwogICAgaWYgKG8gPT0gMikgbWVtc2V0KGRuLCAweDNmLCBzaXplb2YoZG4pKTsKCiAgICBwcmlvcml0eV9xdWV1ZSA8bm9kZSwgdmVjdG9yPG5vZGU+LCBjbXA+IHBxOwogICAgcHEucHVzaCh7dHUsIDB9KTsKCiAgICBpZiAobyA9PSAxKSBkMVt0dV0gPSAwOwogICAgaWYgKG8gPT0gMikgZG5bdHVdID0gMDsKCiAgICB3aGlsZSghcHEuZW1wdHkoKSkgewogICAgICAgIG5vZGUgdHQgPSBwcS50b3AoKTsgcHEucG9wKCk7CiAgICAgICAgaW50IHUgPSB0dC5maTsKICAgICAgICBpbnQgZHUgPSB0dC5zZTsKCiAgICAgICAgaWYgKG8gPT0gMSAmJiBkdSA+IGQxW3VdKSBjb250aW51ZTsKICAgICAgICBpZiAobyA9PSAyICYmIGR1ID4gZG5bdV0pIGNvbnRpbnVlOwoKICAgICAgICBmb3IocGlpIHggOiBhW3VdKSB7CiAgICAgICAgICAgIGludCB2ID0geC5maTsKICAgICAgICAgICAgaW50IHcgPSB4LnNlOwoKICAgICAgICAgICAgaWYgKG8gPT0gMSAmJiBkMVt2XSA+IGQxW3VdICsgdykgewogICAgICAgICAgICAgICAgZDFbdl0gPSBkMVt1XSArIHc7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHt2LCBkMVt2XX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChvID09IDIgJiYgZG5bdl0gPiBkblt1XSArIHcpIHsKICAgICAgICAgICAgICAgIGRuW3ZdID0gZG5bdV0gKyB3OwogICAgICAgICAgICAgICAgcHEucHVzaCh7diwgZG5bdl19KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQp2b2lkIGRpdGNoYURhTHVvbmcoKSB7CiAgICAgbWVtc2V0KEQsIDB4M2YsIHNpemVvZihEKSk7CiAgICAgcHJpb3JpdHlfcXVldWUgPG5vZGUsIHZlY3Rvcjxub2RlPiwgY21wPiBwcTsKICAgICBGT1IodSwgMSwgbiwgMSkgewogICAgICAgIHBxLnB1c2goe3UsIGNbdV19KTsKICAgICAgICBEW3VdID0gY1t1XTsKICAgICB9CgogICAgd2hpbGUoIXBxLmVtcHR5KCkpIHsKICAgICAgICBub2RlIHR0ID0gcHEudG9wKCk7IHBxLnBvcCgpOwogICAgICAgIGludCB1ID0gdHQuZmk7CiAgICAgICAgaW50IGR1ID0gdHQuc2U7CgogICAgICAgIGZvcihwaWkgeCA6IGFbdV0pIHsKICAgICAgICAgICAgaW50IHYgPSB4LmZpOwogICAgICAgICAgICBpbnQgdyA9IHguc2U7CgogICAgICAgICAgICBpZiAoRFt2XSA+IERbdV0gKyB3KSB7CiAgICAgICAgICAgICAgICBEW3ZdID0gRFt1XSArIHc7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHt2LCBEW3ZdfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0Kdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuID4+IG07CiAgICBGT1IoaSwgMSwgbiwgMSkgY2luID4+IGNbaV07CiAgICBGT1IoaSwgMSwgbSwgMSkgewogICAgICAgIGludCB1LCB2LCB3OyBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgYVt1XS5wdWIoe3YsIHd9KTsKICAgICAgICBhW3ZdLnB1Yih7dSwgd30pOwogICAgfQoKICAgIGRpdGNoYSgxLCAxKTsKICAgIGRpdGNoYShuLCAyKTsKICAgIGRpdGNoYURhTHVvbmcoKTsKCiAgICBpbnQgYW5zID0gaW5mOwoKICAgIEZPUih2LCAxLCBuLCAxKSB7CiAgICAgICAgaW50IGNvc3QgPSAoZDFbdl0gKyBEW3ZdICsgZG5bdl0pOwogICAgICAgIGFucyA9IG1pbihhbnMsIGNvc3QpOwogICAgfQoKICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7Cgp9CgpzaWduZWQgbWFpbigpIHsKICAgICNkZWZpbmUgbmFtZSAiYmFpdGFwIgogICAgaWYgKGlmc3RyZWFtKG5hbWUiLmlucCIpKSB7CiAgICAgICAgZnJlb3BlbihuYW1lIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKG5hbWUiLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwoKICAgIHNvbHZlKCk7Cn0K