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)])