#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
struct node{
int x;
int y;
int w;
}a[1000005];
int f[1000005];
int n,m;
int ans;
int cnt;
int sum;
int x,y,w;
bool cmp(node x,node y){
return x.w<y.w;
}
int ff(int x){
if(f[x]==x){
return x;
}
return f[x]=ff(f[x]);
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
cin>>w;
if((w!=0)&&(i<j)){
cnt++;
a[cnt].x=i;
a[cnt].x=j;
a[cnt].w=w;
}
}
}
for(int i=1;i<=m;i++){
cnt++;
a[cnt].x=i;
a[cnt].y=m+1;
a[cnt].w=n;
}
m++;
for(int i=1;i<=m;i++){
f[i]=i;
}
sort(a+1,a+1+cnt,cmp);
for(int i=1;i<=cnt;i++){
int xx=ff(a[i].x);
int yy=ff(a[i].y);
if(xx!=yy){
f[xx]=yy;
ans+=a[i].w;
sum++;
}
if(sum==m-1){
break;
}
}
cout<<ans;
return 0;
}