#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef vector vi; typedef vector> vii; typedef vector> vpii; template using vec = vector; template using uset = unordered_set; template using umap = unordered_map; template T edmondsKarp(vector>& graph, int source, int sink) { assert(source != sink); T flow = 0; vi par(sz(graph)), q = par; for (;;) { fill(all(par), -1); par[source] = 0; int ptr = 1; q[0] = source; rep(i, 0, ptr) { int x = q[i]; for (auto e : graph[x]) { if (par[e.first] == -1 && e.second > 0) { par[e.first] = x; q[ptr++] = e.first; if (e.first == sink) goto out; } } } return flow; out: T inc = numeric_limits::max(); for (int y = sink; y != source; y=par[y]) inc = min(inc, graph[par[y]][y]); flow += inc; for (int y = sink; y != source; y = par[y]) { int p = par[y]; if ((graph[p][y] -= inc) <= 0) graph[p].erase(y); graph[y][p] += inc; } } } void solve () { int n; cin >> n; vector> g(n * 3 + 1); rep(i, 0, n) { int a, b, c, d, e; cin >> a >> b >> c >> d >> e; g[i*3 + 0][i*3 + 1] = g[i*3 + 1][i*3 + 0] = a; g[i*3 + 1][i*3 + 3] = g[i*3 + 3][i*3 + 1] = b; g[i*3 + 1][i*3 + 2] = g[i*3 + 2][i*3 + 1] = c; g[i*3 + 0][i*3 + 2] = g[i*3 + 2][i*3 + 0] = d; g[i*3 + 2][i*3 + 3] = g[i*3 + 3][i*3 + 2] = e; } cout << edmondsKarp(g, 0, n * 3) << endl; } int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); ll T = 1; //cin >> T; rep(i, 0, T) solve(); return 0; }