#include<bits/stdc++.h>
using namespace std;
int a[25],n,ma[25][25],ans[114],sum=0,cnt1=0,ans1,p[25];
bool vis[25];
void dfs(int i,int sum1,int cnt)
{
bool b=1;
p[cnt++]=i;
for(int j=1;j<=n;j++)
{
if(ma[i][j]==1&&vis[j]==0)
{
b=0;
vis[j]=1;
dfs(j,sum1+a[j],cnt+1);
vis[j]=1;
}
}
if(b)
{
sum=max(sum,sum1);
if(cnt>cnt1&&sum<sum1)
cnt1=cnt;
if(sum<sum1)
for(int i=1;i<=cnt;i++)
ans[i]=p[i];
return;
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n-1;i++)
for(int j=1;j<=n-i;j++)
{
int x;
cin>>x;
if(x==1)
ma[i][j]=1;
}
for(int i=1;i<=n;i++)
{
sum=0;
dfs(i,a[i],1);
if(sum>ans1)
ans1=sum;
}
for(int i=1;i<=cnt1;i++)
cout<<ans[i]<<" ";
cout<<endl<<ans1;
}