#include<bits/stdc++.h>
int n,m;
int adj[501][501],rg[501][501];
using namespace std;
bool bfs(int s,int t,int *par)
{
bool vis[n];
memset(vis,0,sizeof(vis));
queue<int>q;
vis[s]=1;
q.push(s);
par[s]=-1;
while(!q.empty())
{
int u=q.front();
q.pop();
for(int v=0;v<n;v++)
{
if(vis[v] || rg[u][v]<=0) continue;
vis[v]=1;
q.push(v);
par[v]=u;
if(v==t) return true;
}
}
return false;
}
int ford_fulkerson(int s,int t)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
rg[i][j]=adj[i][j];
int par[n],maxflow=0;
while(bfs(s,t,par))
{
int res_capacity=INT_MAX;
int v=t;
while(v!=s)
{
int u=v;
res_capacity=min(res_capacity,rg[u][v]);
v=par[v];
}
v=t;
while(v!=s)
{
int u=par[v];
rg[u][v]-=res_capacity;
rg[u][v]+=res_capacity;
v=par[v];
}
maxflow+=res_capacity;
}
return maxflow;
}
int main(){
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>adj[i][j];
int s=0,t=n-1;
cout<<(ford_fulkerson(s,t));
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KaW50IG4sbTsKaW50IGFkals1MDFdWzUwMV0scmdbNTAxXVs1MDFdOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwpib29sIGJmcyhpbnQgcyxpbnQgdCxpbnQgKnBhcikKewogYm9vbCB2aXNbbl07CiBtZW1zZXQodmlzLDAsc2l6ZW9mKHZpcykpOwogcXVldWU8aW50PnE7CiB2aXNbc109MTsKIHEucHVzaChzKTsKIHBhcltzXT0tMTsKIHdoaWxlKCFxLmVtcHR5KCkpCiB7CiAgICBpbnQgdT1xLmZyb250KCk7CiAgICBxLnBvcCgpOwogICAgZm9yKGludCB2PTA7djxuO3YrKykKICAgICAgICB7CiAgICAgICAgaWYodmlzW3ZdIHx8IHJnW3VdW3ZdPD0wKSBjb250aW51ZTsKICAgICAgICB2aXNbdl09MTsKICAgICAgICBxLnB1c2godik7CiAgICAgICAgcGFyW3ZdPXU7CiAgICBpZih2PT10KSByZXR1cm4gdHJ1ZTsKICAgIH0KIH0KIHJldHVybiBmYWxzZTsKfQppbnQgZm9yZF9mdWxrZXJzb24oaW50IHMsaW50IHQpCnsKICAgIApmb3IoaW50IGk9MDtpPG47aSsrKQogICAgZm9yKGludCBqPTA7ajxuO2orKykKICAgICAgIHJnW2ldW2pdPWFkaltpXVtqXTsKICAgICAgIGludCBwYXJbbl0sbWF4Zmxvdz0wOwogICAgICAgd2hpbGUoYmZzKHMsdCxwYXIpKQogICAgICAgewogICAgICAgaW50IHJlc19jYXBhY2l0eT1JTlRfTUFYOwogICAgICAgaW50IHY9dDsKICAgICAgIHdoaWxlKHYhPXMpCiAgICAgICAgewogICAgICAgIGludCB1PXY7CiAgICAgICAgICByZXNfY2FwYWNpdHk9bWluKHJlc19jYXBhY2l0eSxyZ1t1XVt2XSk7CiAgICAgICAgICB2PXBhclt2XTsKICAgICAgIH0KICAgICAgIHY9dDsKICAgICAgIHdoaWxlKHYhPXMpCiAgICAgICB7CiAgICAgICAgaW50IHU9cGFyW3ZdOwogICAgICAgIHJnW3VdW3ZdLT1yZXNfY2FwYWNpdHk7CiAgICAgICAgcmdbdV1bdl0rPXJlc19jYXBhY2l0eTsKICAgICAgICB2PXBhclt2XTsKCiAgICAgICB9CiAgICAgICBtYXhmbG93Kz1yZXNfY2FwYWNpdHk7CiAgICAgICB9CiAgICAgICByZXR1cm4gbWF4ZmxvdzsKCn0KaW50IG1haW4oKXsKY2luPj5uOwpmb3IoaW50IGk9MDtpPG47aSsrKQogICAgZm9yKGludCBqPTA7ajxuO2orKykKICAgICAgICBjaW4+PmFkaltpXVtqXTsKCmludCBzPTAsdD1uLTE7CmNvdXQ8PChmb3JkX2Z1bGtlcnNvbihzLHQpKTsKCgpyZXR1cm4gMDsKCgoKCn0=