# import sys # input = sys.stdin.readline def mp():return map(int,input().split()) def lmp():return list(map(int,input().split())) import math import bisect from copy import deepcopy as dc from itertools import accumulate from collections import Counter, defaultdict, deque def ceil(U,V):return (U+V-1)//V def modf1(N,MOD):return (N-1)%MOD+1 n = int(input()) a = lmp() grid = [] for i in range(n): b = lmp() grid.append(b) ans = 0 ans_a = 0 for i in range(2**n): cnt = 0 for j in range(n): if i & 1 << j: cnt += a[j] for k in range(j+1, n): if i & 1 << k: cnt += grid[j][k] if ans <= cnt: ans = cnt ans_a = i print(ans) ans_n = [] for i in range(n): if ans_a & 1 << i: ans_n.append(i+1) print(*ans_n)