N,M,K = map(int, input().split()) A = list(map(int, input().split())) goal = [-1] * N for i in A: goal[i-1] = 1 T = [list(map(int, input().split())) for i in range(N)] dp = [[10**18]*N for i in range(2**N)] for i in range(N): dp[1<= M: ans = min(ans,dp[i][j]) for _next in range(N): if (i>>_next) & 1: continue dp[i|(1<<_next)][_next] = min(dp[i|(1<<_next)][_next],dp[i][j]+T[j][_next]) print(ans)