#include<bits/stdc++.h>
#define int long long
#define maxn 1000050
#define lc rt<<1
#define rc rt<<1|1
#define mod1 998244353
#define mod2 (int)(1e9+7)
#define fq(i,a,b) for(int i=a;i<=b;i++)
#define fp(i,a,b) for(int i=a;i<b;i++)
#define frq(i,a,b) for(int i=a;i>=b;i--)
#define frp(i,a,b) for(int i=a;i>b;i--)
using namespace std;
int qpow(int x,int y,int mod) {
int ans=1;
while(y) {
if(y&1) ans=ans*x%mod;
x=x*x%mod,y>>=1;
}
return ans;
}
int n,m;
struct aa{ int x,y,z; }a[maxn];
struct PP{ int to,w; };
vector<PP> P[maxn];
int inf=1e18;
bool cmp(aa p,aa q) { return p.z<q.z; }
int fa[maxn];
int find(int x) {
if(fa[x]==x) return x;
else return fa[x]=find(fa[x]);
}
int res,sum;
bool vis[maxn];
int dep[maxn],f[maxn][35],g[maxn][35];
int h[maxn][35];
void dfs(int x,int fa,int w) {
dep[x]=dep[fa]+1,f[x][0]=fa,g[x][0]=w,h[x][0]=-inf;
fq(i,1,20) {
f[x][i]=f[f[x][i-1]][i-1];
g[x][i]=max(g[x][i-1],g[f[x][i-1]][i-1]);
h[x][i]=max(h[x][i-1],g[f[x][i-1]][i-1]);
if(g[x][i-1]>g[f[x][i-1]][i-1]) h[x][i]=max(h[x][i],g[f[x][i-1]][i-1]);
else if (g[x][i-1]<g[f[x][i-1]][i-1]) h[x][i]=max(h[x][i],g[x][i-1]);
}
for(auto now: P[x]) {
if(now.to==fa) continue;
dfs(now.to,x,now.w);
}
}
int LCA(int x,int y) {
if(dep[x]<dep[y]) swap(x,y);
frq(i,20,0) if(dep[f[x][i]]>=dep[y]) x=f[x][i];
if(x==y) return x;
frq(i,20,0) if(f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i];
return f[x][0];
}
int Q_max(int x,int y,int maxx) {
int ans=-inf;
frq(i,18,0) {
if(dep[f[x][i]]>=dep[y]) {
if(maxx!=g[x][i]) ans=max(ans,g[x][i]);
else ans=max(ans,h[x][i]);
x=f[x][i];
}
} return ans;
}
signed main(){
ios::sync_with_stdio(false);cin.tie(0); cin>>n>>m;
fq(i,1,m) cin>>a[i].x>>a[i].y>>a[i].z;
sort(a+1,a+m+1,cmp);
fq(i,1,n) fa[i]=i;
res=0;
fq(i,1,m) {
int x1=find(a[i].x),=find(a[i].y);
if(x1!=y1) {
vis[i]=1,res++;
fa[x1]=y1;
sum+=a[i].z;
P[a[i].x].push_back({a[i].y,a[i].z});
P[a[i].y].push_back({a[i].x,a[i].z});
} if(res==n-1) break;
} res=0; dfs(1,0,0);
int ans=inf;
fq(i,1,m) {
if(vis[i]) continue;
int lca=LCA(a[i].x,a[i].y);
int ans1=Q_max(a[i].x,lca,a[i].z);
int ans2=Q_max(a[i].y,lca,a[i].z);
ans=min(ans,sum-max(ans1,ans2)+a[i].z);
} cout<<ans;
return 0;
}
WA ON 4#