#include<bits/stdc++.h>
using namespace std;
struct edge{
int u,v,w;
}e[1005];
bool cmp(edge a,edge b){
return a.w<b.w;
}
int fa[1005],ans=0,k=0;
int a,b,xx,yy,zz;
int find(int x){
return x==fa[x]?x:fa[x]=find(fa[x]);
}
void p(int xx,int yy,int zz){
e[k].u=xx,e[k].v=yy,e[k].w=zz;
}
void q(int x,int y){
if(find(x)!=find(y))fa[find(x)]=find(y);
k++;
}
void K(){
sort(e,e+b,cmp);
for(int i=0;i<b;i++)fa[i]=i;
for(int i=0;i<b;i++){
int u=find(e[i].u),v=find(e[i].v);
if(u!=v){
ans+=e[i].w;
q(u,v);
}
}
}
int main(){
cin>>a>>b;
for(int i=0;i<b;i++){
for(int j=0;j<b;j++){
cin>>xx;
if(xx<a&&xx!=0){
p(i,j,xx);
}
}
}
if(k==b-1)cout<<ans+a;
else cout<<ans+(b-k)*a;
}