#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 315;
struct Edge {
int u, v, w;
};
struct cmp {
bool operator() (Edge x, Edge y) {
return x.w < y.w;
}
};
int N;
int A[MAXN];
int B[MAXN][MAXN];
vector<Edge> g;
bool vis[MAXN];
struct Dosu {
int par[MAXN], sz[MAXN];
void INIT() {
for (int i = 1; i <= MAXN - 1; i++) par[i] = i, sz[i] = 1;
}
int find_set(int u) {
return (par[u] == u ? u : par[u] = find_set(par[u]));
}
void union_set(int u, int v) {
u = find_set(u), v = find_set(v);
if (sz[u] < sz[v]) swap(u, v);
par[v] = par[u];
sz[u] += sz[v];
}
} DSU;
main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> N;
DSU.INIT();
for (int i = 1; i <= N; i++) {
int x;
cin >> x;
g.push_back({i, N + 1, x});
}
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
int w;
cin >> w;
g.push_back({i, j, w});
}
}
sort(g.begin(), g.end(), cmp());
int ans = 0;
for (auto E : g) {
if (DSU.find_set(E.u) != DSU.find_set(E.v)) {
DSU.union_set(E.u, E.v);
ans += E.w;
}
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwoKY29uc3QgaW50IE1BWE4gPSAzMTU7CgpzdHJ1Y3QgRWRnZSB7CiAgICBpbnQgdSwgdiwgdzsKfTsKCnN0cnVjdCBjbXAgewogICAgYm9vbCBvcGVyYXRvcigpIChFZGdlIHgsIEVkZ2UgeSkgewogICAgICAgIHJldHVybiB4LncgPCB5Lnc7CiAgICB9Cn07CgppbnQgTjsKaW50IEFbTUFYTl07CmludCBCW01BWE5dW01BWE5dOwp2ZWN0b3I8RWRnZT4gZzsKYm9vbCB2aXNbTUFYTl07CgpzdHJ1Y3QgRG9zdSB7CiAgICBpbnQgcGFyW01BWE5dLCBzeltNQVhOXTsKICAgIHZvaWQgSU5JVCgpIHsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBNQVhOIC0gMTsgaSsrKSBwYXJbaV0gPSBpLCBzeltpXSA9IDE7CiAgICB9CgogICAgaW50IGZpbmRfc2V0KGludCB1KSB7CiAgICAgICAgcmV0dXJuIChwYXJbdV0gPT0gdSA/IHUgOiBwYXJbdV0gPSBmaW5kX3NldChwYXJbdV0pKTsKICAgIH0KCiAgICB2b2lkIHVuaW9uX3NldChpbnQgdSwgaW50IHYpIHsKICAgICAgICB1ID0gZmluZF9zZXQodSksIHYgPSBmaW5kX3NldCh2KTsKICAgICAgICBpZiAoc3pbdV0gPCBzelt2XSkgc3dhcCh1LCB2KTsKICAgICAgICBwYXJbdl0gPSBwYXJbdV07CiAgICAgICAgc3pbdV0gKz0gc3pbdl07CiAgICB9Cn0gRFNVOwoKCm1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwoKICAgIGNpbiA+PiBOOwogICAgRFNVLklOSVQoKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewogICAgICAgIGludCB4OwogICAgICAgIGNpbiA+PiB4OwogICAgICAgIGcucHVzaF9iYWNrKHtpLCBOICsgMSwgeH0pOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IE47IGorKykgewogICAgICAgICAgICBpbnQgdzsKICAgICAgICAgICAgY2luID4+IHc7CiAgICAgICAgICAgIGcucHVzaF9iYWNrKHtpLCBqLCB3fSk7CiAgICAgICAgfQogICAgfQoKICAgIHNvcnQoZy5iZWdpbigpLCBnLmVuZCgpLCBjbXAoKSk7CgogICAgaW50IGFucyA9IDA7CgogICAgZm9yIChhdXRvIEUgOiBnKSB7CiAgICAgICAgaWYgKERTVS5maW5kX3NldChFLnUpICE9IERTVS5maW5kX3NldChFLnYpKSB7CiAgICAgICAgICAgIERTVS51bmlvbl9zZXQoRS51LCBFLnYpOwogICAgICAgICAgICBhbnMgKz0gRS53OwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFuczsKfQo=