N = int(input()) X = tuple(tuple(map(int, input().split())) for _ in range(N)) Y = [0] * N for i, x in enumerate(X): for j, xj in enumerate(x): if xj: Y[i] += 1 << j A = tuple(map(int, input().split())) dp = [0] * (1 << N) for S in range(1 << N): for i, a in enumerate(A): if (S >> i) & 1: dp[S] += a for S in range(1 << N): for i, T in enumerate(Y): if S - T == S ^ T: dp[S | (1 << i)] = min(dp[S], dp[S | (1 << i)]) print(dp[(1<