#include using namespace std; using ll = long long; #define rep(i, n) for (int i = 0; i < n; ++i) int main() { int h, w; cin >> h >> w; ll a[301][301], b[301], c[301]; rep(i, h) rep(j, w) cin >> a[i][j]; rep(i, h) cin >> b[i]; rep(i, w) cin >> c[i]; int size = h + w + 2, S = size - 2, T = size - 1; atcoder::mf_graph g(size); ll sum = 0; rep(i, h) { ll s = 0; rep(j, w) s += a[i][j]; g.add_edge(S, i, s); g.add_edge(i, T, b[i]); sum += b[i]; } rep(j, w) { g.add_edge(h + j, T, c[j]); sum += c[j]; } rep(i, h) rep(j, w) { g.add_edge(i, h + j, a[i][j]); } cout << sum - g.flow(S, T) << '\n'; }