#include<bits/stdc++.h>
using namespace std;
int n,a[30],p[30],mp[30][30],f[30],maxn,maxi;
void gcd(int x){
if(!x){
return ;
}
gcd(p[x]);
cout<<x<<" ";
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
f[i]=a[i];
}
for(int i=1;i<n;i++){
for(int j=i+1;j<=n;j++){
cin>>mp[i][j];
}
}
for(int i=1;i<n;i++){
for(int j=1;j<i;j++){
if(mp[j][i])
if(f[i]<f[j]+a[i]){
f[i]=f[j]+a[i];
p[i]=j;
}
}
if(maxn<f[i]){
maxn=f[i];maxi=i;
}
}
gcd(maxi);
cout<<maxn;
return 0;
}