#include <iostream>
#include <vector>
using namespace std;
const int N = 200 + 10;
const int INF = 1e8;
int n;
int a[N];
int v[N][N], f[N];
vector<int> vec[N];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", a + i);
a[0] = -INF;
for (int i = 0; i < N; i++) {
f[i] = -INF;
for (int j = 0; j < N; j++) v[i][j] = -INF;
}
int x, y;
do {
scanf("%d%d", &x, &y);
v[x][y] = a[y];
} while (x != 0 || y != 0);
for (int i = 1; i <= n; i++) f[i] = a[i];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
if (f[j] + v[j][i] > f[i]) f[i] = f[j] + v[j][i], vec[i] = vec[j], vec[i].push_back(j);
}
int ans = -INF, val;
for (int i = 1; i <= n; i++)
if (f[i] > ans) ans = f[i], val = i;
for (int i = 0; i < vec[val].size(); i++) printf("%d-", vec[val][i]);
int l = -INF, z = vec[val][vec[val].size() - 1], q;
for (int i = 0; i < N; i++)
if (v[z][i] > l) l = v[z][i], q = i;
printf("%d\n", q);
printf("%d\n", ans);
return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1262