#include<bits/stdc++.h>
using namespace std;
int n;
int lt[25];
bool ls[20][20];
bool z[25];
int b[9999];
int bi=0;
int bz[9999];
int l;
int ans=0;
int maxans=-1;
int step=0;
int hstep=0;
bool thck(int l){
for (int i=0;i<n;i++){
if (ls[l][i] and !z[i]) return false;
}
return true;
}
void dfs(int l,int step,int ans){
if (thck(l)){
if (ans>maxans) {
maxans=ans;
hstep=step;
for (int i=0;i<step;i++) bz[i]=b[i];
ans=0;
step=0;
bi=0;
}
}
for (int i=0;i<n;i++){
if (ls[l][i] and !z[i]){
z[i]=1;
b[bi]=i;
bi++;
ans+=lt[i];
step++;
dfs(i,step,ans);
z[i]=0;
}
}
}
int main(){
cin>>n;
for (int i=0;i<n;i++) cin>>lt[i];
for (int i=0;i<n-1;i++){
for (int j=0;j<n-i-2;j++){
cin>>ls[i][j];
}
}
for (int i=0;i<n;i++){
dfs(0,0,lt[i]);
}
for (int i=0;i<hstep;i++) cout<<bz[i]+1<<' ';
cout<<'\n';
cout<<maxans;
return 0;
}