#include #include using namespace std; #include int main() { cin.tie(nullptr), ios::sync_with_stdio(false); int N, S, T; cin >> N >> S >> T; const int gs = N, gt = gs + 1; atcoder::mf_graph mf(gt + 1); constexpr long long inf = 1LL << 40; while (S--) { int e; cin >> e; mf.add_edge(gs, e - 1, inf); } while (T--) { int r; cin >> r; mf.add_edge(r - 1, gt, inf); } long long ret = 0; for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { int c; cin >> c; if (i <= j) ret += c; mf.add_edge(i, j, c); } } cout << ret - mf.flow(gs, gt) << endl; }