#include<bits/stdc++.h>
using namespace std;
const int N=5003;
const int M=2e5+5;
int fa[N];
int n,m,ans,cnt;
int yh[503][503];
struct edge{
int u,v;
bool operator <(const edge &t)const
{return u<t.u;}
}e[503][503];
int find(int x)
{
if(fa[x]==x)
return x;
return fa[x]=find(fa[x]);
}
void Kru()
{
for(int i=1;i<=m;i++)
sort(e[i],e[i]+m);
int minn=M;
for(int i=1;i<=m;i++)
{
int pos=0;
for(int j=1;j<=m;j++)
{
if(j==i)
continue;
for(int k=1;k<=m;k++)
{
if(e[i][j].v==k)
{
pos+=e[i][j].u;
break;
}
}
}
if(pos<minn)
minn=pos;
}
cout <<minn+n;
}
int main()
{
cin >>n >>m;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=m;j++)
{
cin >>e[i][j].u;
e[i][j].v=j;
if(e[i][j].u==0)
e[i][j].u=n;
}
}
Kru();
return 0;
}
Why???