n, m, k = map(int, input().split()) A = list(map(int, input().split())) T = [list(map(int, input().split())) for _ in range(n)] inf = float("INF") dp = [[inf for _ in range(n)] for _ in range(1 << n)] for i in range(n): dp[1<> now & 1: continue for nxt in range(n): if bit >> nxt & 1: continue dp[bit | 1 << nxt][nxt] = min(dp[bit | 1 << nxt][nxt], dp[bit][now] + T[now][nxt]) A = [A[i]-1 for i in range(len(A))] ans = inf for bit in range(1<