#include "bits/stdc++.h"usingnamespacestd;
int Connected[15][15], G[15];
int TRes[15], Res[15], Visit[15];
int n, t, res;
void Dfs(int from, int tot, int num) {
bool End = true;
for (int i = 1; i <= n; ++i)
if (!Visit[i] && Connected[from][i]) {
Visit[i] = true; TRes[num] = i;
Dfs(i, tot + G[i], num + 1);
End = Visit[i] = false; TRes[num] = 0;
}
if (End && tot > res) {
res = tot;
for (int i = 1; i <= num; ++i)
Res[i] = TRes[i];
}
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d", &G[i]);
Connected[0][i] = 1;
}
for (int i = 1; i <= n - 1; ++i)
for (int k = i + 1; k <= n; ++k) {
scanf("%d", &t);
Connected[i][k] = Connected[k][i] = t;
}
Dfs(0, G[0], 1);
for (t = 1; Res[t] != 0; ++t)
printf("%s%d", (t > 1) ? "-" : "", Res[t]);
printf("\nMAX=%d\n", res);
return0;
}