#include using namespace std; using ll = long long; const ll INF = 1e18; int main() { int N, M, K; cin >> N >> M >> K; vector able(N, false); while(K--) { int t; cin >> t; able[--t] = true; } ll T[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) cin >> T[i][j]; } vector dp(1<(N, INF)); for (int i = 0; i < N; i++) { dp[1<>j&1) continue; dp[1<= M) { for (int j = 0; j < N; j++) { if (able[j]) { ans = min(ans, dp[S][i] + T[i][j]); } } } } cout << ans << endl; }