#include<bits/stdc++.h>
using namespace std;
int n,x[102],d[102],gps[101],c[101],ans=-1,t,maxx;
bool l[102][102],a;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i];
d[i]=x[i];
ans=max(ans,d[i]);
gps[i]=i;
}
for(int i=1;i<n;i++){
for(int j=1;j<=n-i;j++){
cin>>a;
l[j+i][i]=a;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
if(l[i][j]==1){
d[i]=max(d[i],d[j]+x[i]);
gps[i]=j;
}
ans=max(ans,d[i]);
}
}
for(int i=1;i<=n;i++){
if(d[i]==ans)maxx=i;
}
while(gps[maxx]!=maxx){
c[++t]=maxx;
maxx=gps[maxx];
}
c[++t]=maxx;
for(int i=t;i>=2;i--)cout<<c[i]<<" ";
cout<<c[1]<<endl;
cout<<ans;
}