#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const long long INF = 1e18;
struct Edge {
int to;
int cost;
};
// Funkcja realizująca algorytm Dijkstry
void dijkstra(int start, int n, const vector<vector<Edge>>& adj, vector<long long>& dist) {
dist.assign(n + 1, INF);
dist[start] = 0;
priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<pair<long long, int>>> pq;
pq.push({0, start});
while (!pq.empty()) {
long long d = pq.top().first;
int u = pq.top().second;
pq.pop();
if (d > dist[u]) continue;
for (auto& edge : adj[u]) {
if (dist[u] + edge.cost < dist[edge.to]) {
dist[edge.to] = dist[u] + edge.cost;
pq.push({dist[edge.to], edge.to});
}
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
if (!(cin >> n)) return 0;
vector<int> prices(n + 1);
for (int i = 1; i <= n; ++i) {
cin >> prices[i];
}
int m;
cin >> m;
vector<vector<Edge>> adj(n + 1);
vector<vector<Edge>> adj_rev(n + 1);
for (int i = 0; i < m; ++i) {
int u, v, c;
cin >> u >> v >> c;
adj[u].push_back({v, c});
adj_rev[v].push_back({u, c});
}
vector<long long> distTo; // Złoto -> Metal V
vector<long long> distFrom; // Metal V -> Złoto
dijkstra(1, n, adj, distTo);
dijkstra(1, n, adj_rev, distFrom);
long long min_total_cost = INF;
for (int i = 1; i <= n; ++i) {
// Sprawdzamy tylko metale, do których da się dotrzeć i z których da się wrócić
if (distTo[i] != INF && distFrom[i] != INF) {
long long current_cost = distTo[i] + distFrom[i] + (prices[i] / 2);
if (current_cost < min_total_cost) {
min_total_cost = current_cost;
}
}
}
cout << min_total_cost << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgbG9uZyBsb25nIElORiA9IDFlMTg7CgpzdHJ1Y3QgRWRnZSB7CiAgICBpbnQgdG87CiAgICBpbnQgY29zdDsKfTsKCi8vIEZ1bmtjamEgcmVhbGl6dWrEhWNhIGFsZ29yeXRtIERpamtzdHJ5CnZvaWQgZGlqa3N0cmEoaW50IHN0YXJ0LCBpbnQgbiwgY29uc3QgdmVjdG9yPHZlY3RvcjxFZGdlPj4mIGFkaiwgdmVjdG9yPGxvbmcgbG9uZz4mIGRpc3QpIHsKICAgIGRpc3QuYXNzaWduKG4gKyAxLCBJTkYpOwogICAgZGlzdFtzdGFydF0gPSAwOwogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsb25nIGxvbmcsIGludD4sIHZlY3RvcjxwYWlyPGxvbmcgbG9uZywgaW50Pj4sIGdyZWF0ZXI8cGFpcjxsb25nIGxvbmcsIGludD4+PiBwcTsKICAgIHBxLnB1c2goezAsIHN0YXJ0fSk7CgogICAgd2hpbGUgKCFwcS5lbXB0eSgpKSB7CiAgICAgICAgbG9uZyBsb25nIGQgPSBwcS50b3AoKS5maXJzdDsKICAgICAgICBpbnQgdSA9IHBxLnRvcCgpLnNlY29uZDsKICAgICAgICBwcS5wb3AoKTsKCiAgICAgICAgaWYgKGQgPiBkaXN0W3VdKSBjb250aW51ZTsKCiAgICAgICAgZm9yIChhdXRvJiBlZGdlIDogYWRqW3VdKSB7CiAgICAgICAgICAgIGlmIChkaXN0W3VdICsgZWRnZS5jb3N0IDwgZGlzdFtlZGdlLnRvXSkgewogICAgICAgICAgICAgICAgZGlzdFtlZGdlLnRvXSA9IGRpc3RbdV0gKyBlZGdlLmNvc3Q7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtkaXN0W2VkZ2UudG9dLCBlZGdlLnRvfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGludCBuOwogICAgaWYgKCEoY2luID4+IG4pKSByZXR1cm4gMDsKCiAgICB2ZWN0b3I8aW50PiBwcmljZXMobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgY2luID4+IHByaWNlc1tpXTsKICAgIH0KCiAgICBpbnQgbTsKICAgIGNpbiA+PiBtOwoKICAgIHZlY3Rvcjx2ZWN0b3I8RWRnZT4+IGFkaihuICsgMSk7CiAgICB2ZWN0b3I8dmVjdG9yPEVkZ2U+PiBhZGpfcmV2KG4gKyAxKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07ICsraSkgewogICAgICAgIGludCB1LCB2LCBjOwogICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gYzsKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHt2LCBjfSk7CiAgICAgICAgYWRqX3Jldlt2XS5wdXNoX2JhY2soe3UsIGN9KTsKICAgIH0KCiAgICB2ZWN0b3I8bG9uZyBsb25nPiBkaXN0VG87ICAgLy8gWsWCb3RvIC0+IE1ldGFsIFYKICAgIHZlY3Rvcjxsb25nIGxvbmc+IGRpc3RGcm9tOyAvLyBNZXRhbCBWIC0+IFrFgm90bwoKICAgIGRpamtzdHJhKDEsIG4sIGFkaiwgZGlzdFRvKTsKICAgIGRpamtzdHJhKDEsIG4sIGFkal9yZXYsIGRpc3RGcm9tKTsKCiAgICBsb25nIGxvbmcgbWluX3RvdGFsX2Nvc3QgPSBJTkY7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgLy8gU3ByYXdkemFteSB0eWxrbyBtZXRhbGUsIGRvIGt0w7NyeWNoIGRhIHNpxJkgZG90cnplxIcgaSB6IGt0w7NyeWNoIGRhIHNpxJkgd3LDs2NpxIcKICAgICAgICBpZiAoZGlzdFRvW2ldICE9IElORiAmJiBkaXN0RnJvbVtpXSAhPSBJTkYpIHsKICAgICAgICAgICAgbG9uZyBsb25nIGN1cnJlbnRfY29zdCA9IGRpc3RUb1tpXSArIGRpc3RGcm9tW2ldICsgKHByaWNlc1tpXSAvIDIpOwogICAgICAgICAgICBpZiAoY3VycmVudF9jb3N0IDwgbWluX3RvdGFsX2Nvc3QpIHsKICAgICAgICAgICAgICAgIG1pbl90b3RhbF9jb3N0ID0gY3VycmVudF9jb3N0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgbWluX3RvdGFsX2Nvc3QgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==