#include<bits/stdc++.h>
using namespace std;
int a[50][50],n,f[50],vis[50],ans;
void dfs(int p,int sc){
ans=max(ans,sc);
for(int i=1;i<=n;i++){
if(!vis[i] && a[p][i]){
vis[i]=1;
dfs(i,sc+f[i]);
vis[i]=0;
}
}
}
int main(){
cin >> n;
for(int i=1;i<=n;i++) cin >> f[i];
int u=1;
for(int i=n-1;i>0;i--,u++){
for(int j=1;j<=i;j++){
int x;
cin >> x;
a[u][x]=1;
}
}
for(int i=1;i<=n;i++){
vis[i]=1;
dfs(i,f[i]);
vis[i]=0;
}
cout << ans;
return 0;
}