N=int(input())
A=list(map(int,input().split()))
B=[]
for _ in range(N):
    B.append(list(map(int,input().split())))

Score=[0]*(1<<N)

for S in range(1,1<<N):
    x=S&(-S)
    x_bit=x.bit_length()-1
    T=S^x

    C=Score[T]+A[x_bit]
    for i in range(N):
        if T&1:
            C+=B[x_bit][i]
        T>>=1

    Score[S]=C

Max=max(Score[1:])
Arg=Score.index(Max)

print(Max)
print(*[i+1 for i in range(N) if Arg&(1<<i)])