#include #include using namespace std; using namespace atcoder; using ll = long long; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } ll inf_ll = 9223372036854775807; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) using mint = atcoder::modint998244353; using mint1 = atcoder::modint1000000007; using Pa = std::pair; int Yes(bool x){ if(x) cout << "Yes"; else cout << "No"; cout << endl; return 0; } int main(){ ll N, M, K; cin >> N >> M >> K; vector A(K); rep(i, K){ cin >> A[i]; A[i]--; } vector> T(N, vector(N)); rep(i, N){ rep(j, N){ cin >> T[i][j]; } } ll ans = inf_ll; rep(i, (1< B; rep(j, N){ if((i >> j) & 1) B.push_back(j); } do{ ll x = 0; rep(j, M-1){ x += T[B[j]][B[j+1]]; } ll y = inf_ll; rep(j, K){ chmin(y, T[B[M-1]][A[j]]); } x += y; chmin(ans, x); }while(next_permutation(B.begin(), B.end())); } cout << ans; }