N = int(input()) X = [[int(x) for x in input().split()] for _ in range(N)] A = [int(a) for a in input().split()] par = [set([]) for _ in range(N)] for i in range(N): for j in range(N): if X[i][j] == 1: par[i].add(j) dp = [-1]*(2**N) dp[-1] = 1 def f(n): if dp[n] >= 0: return dp[n] S = set([]) for j in range(N): if n & (1<