#include<bits/stdc++.h>
using namespace std;
const int N=100005;
struct edge{
int v,w,next;
}e[N<<2];
int eid,h[N];
void addEdge(int u,int v,int w){
e[eid]={v,w,h[u]};
h[u]=eid++;
}
int f[N][30],d[N],g[N][30][2];
void dfs(int u){
for(int i=h[u];~i;i=e[i].next){
int v=e[i].v,w=e[i].w;
if(v==f[u][0])continue;
f[v][0]=u;
g[v][0][0]=w;
g[v][0][1]=-0x3f3f3f3f;
d[v]=d[u]+1;
dfs(v);
}
}
int lg[N],bigDog,medDog;
void findDog(int x,int y){
if(d[x]<d[y])swap(x,y);
for(int i=lg[d[x]-d[y]];i>=0;i--){
if(d[f[x][i]]>d[y]){
bigDog=max(g[x][i][0],bigDog);
medDog=max(g[x][i][1],medDog);
x=f[x][i];
}
}
if(x!=y){
for(int i=lg[d[x]];i>=0;i--){
if(f[x][i]!=f[y][i]){
int temp1=max(g[x][i][0],g[y][i][0]),temp2=max(g[x][i][1],g[y][i][1]);
bigDog=max(temp1,bigDog);
medDog=max(temp2,medDog);
x=f[x][i];
y=f[y][i];
}
}
int temp1=max(g[x][0][0],g[y][0][0]),temp2=max(g[x][0][1],g[y][0][1]);
bigDog=max(temp1,bigDog);
medDog=max(temp2,medDog);
}
}
int p[N];
int find(int x){
if(p[x]!=x)p[x]=find(p[x]);
return x;
}
struct krnDog{
int u,v,w;
bool operator<(const krnDog&rhs)const{
return w<rhs.w;
}
}dogs[N<<2];
bool vis[N<<2];
int main(){
int n,m;
memset(h,-1,sizeof h);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)p[i]=i;
lg[0]=-1;
for(int i=1;i<=n;i++)lg[i]=lg[i/2]+1;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&dogs[i].u,&dogs[i].v,&dogs[i].w);
}
sort(dogs+1,dogs+1+m);
long long sum=0;
for(int i=1;i<=m;i++){
int u=find(dogs[i].u),v=find(dogs[i].v),w=dogs[i].w;
if(u!=v){
p[u]=v;
vis[i]=1;
addEdge(u,v,w);
addEdge(v,u,w);
sum+=w;
}
}
d[1]=1;
dfs(1);
for(int j=1;1<<j<n;j++){
for(int i=1;i<=n;i++){
f[i][j]=f[f[i][j-1]][j-1];
g[i][j][0]=max(g[i][j-1][0],g[f[i][j-1]][j-1][0]);
if(g[i][j][0]==g[f[i][j-1]][j-1][0]){
g[i][j][1]=max(g[i][j-1][1],g[f[i][j-1]][j-1][1]);
}else if(g[i][j][0]<g[f[i][j-1]][j-1][0]){
g[i][j][1]=max(g[i][j-1][0],g[f[i][j-1]][j-1][1]);
}else{
g[i][j][1]=max(g[i][j-1][1],g[f[i][j-1]][j-1][0]);
}
}
}
long long ans=1e18;
for(int i=1;i<=m;i++){
if(!vis[i]){
int u=dogs[i].u,v=dogs[i].v,w=dogs[i].w;
bigDog=0,medDog=0;
findDog(u,v);
if(w>bigDog){
ans=min(ans,sum-bigDog+w);
}else if(w==bigDog){
ans=min(ans,sum-medDog+w);
}
}
}
printf("%lld\n",ans);
return 0;
}