#include <bits/stdc++.h>
#define ll long long
#define double long double
#define all(v) v.begin(), v.end()
#define ii pair<int, int>
#define fi first
#define se second
#define pb push_back
#define maximize(a, b) a = max(a, b)
#define minimize(a, b) a = min(a, b)
#define cbit(n) __builtin_popcount(n)
#define getbit(n, i) (n >> i) & 1
#define onbit(n, i) n | (1 << i)
#define offbit(n, i) n ^ (1 << i)
#define TASK "1"
using namespace std;
const int N = 3e5 + 5;
const ll oo = 1e18;
const int base = 311;
//const int sz = sqrt(N);
const int mod = 1e9 + 7;
int par[N], sz[N], h[N], mx[19][N], mx2[19][N], up[19][N], vis[N];
int n, m;
vector<ii> g[N];
struct edge
{
int u, v, w;
bool operator < (const edge &b) const
{
return w < b.w;
}
} e[N];
void build(int u)
{
sz[u] = 1;
par[u] = u;
}
int f(int u) { return u == par[u] ? u : par[u] = f(par[u]); }
bool join(int u, int v)
{
u = f(u);
v = f(v);
if(u != v){
if(sz[u] < sz[v]) swap(u, v);
sz[u] += sz[v];
par[v] = u;
return true;
}
return false;
}
int max2(int a, int b, int c, int d)
{
int mx = max(max(a, b), max(c, d));
int res = 0;
if(a != mx) maximize(res, a);
if(b != mx) maximize(res, b);
if(c != mx) maximize(res, c);
if(d != mx) maximize(res, d);
return res;
}
void dfs(int u, int p)
{
up[0][u] = p;
for(int i = 1; i <= 18; i++){
up[i][u] = up[i - 1][up[i - 1][u]];
mx[i][u] = max(mx[i - 1][u], mx[i - 1][up[i - 1][u]]);
mx2[i][u] = max2(mx2[i - 1][u], mx2[i - 1][up[i - 1][u]], mx[i - 1][u], mx[i - 1][up[i - 1][u]]);
}
for(ii v : g[u]){
if(v.fi == p) continue;
h[v.fi] = h[u] + 1;
mx[0][v.fi] = v.se;
dfs(v.fi, u);
}
}
int lca(int u, int v, int w)
{
int res = 0, res2 = 0;
if(h[u] != h[v]){
if(h[u] < h[v]) swap(u, v);
int d = h[u] - h[v];
for(int i = 18; i >= 0; i--){
if(getbit(d, i)){
res2 = max2(mx[i][u], mx2[i][u], res, res2);
maximize(res, mx[i][u]);
u = up[i][u];
}
}
}
if(u == v) return (res == w ? res2 : res);
for(int i = 18; i >= 0; i--){
if(up[i][u] != up[i][v]){
res2 = max2(res2, mx[i][u], mx[i][v], mx2[i][v]);
res2 = max2(res2, mx[i][v], mx2[i][u], res);
maximize(res, mx[i][u]);
maximize(res, mx[i][v]);
u = up[i][u];
v = up[i][v];
}
}
res2 = max2(res2, mx[0][u], mx[0][v], mx2[0][v]);
res2 = max2(res2, mx[0][v], mx2[0][u], res);
maximize(res, mx[0][u]);
maximize(res, mx[0][v]);
if(res == w) return res2;
return res;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
if(fopen(TASK".inp", "r")){
freopen(TASK".inp", "r", stdin);
freopen(TASK".out", "w", stdout);
}
cin >> n >> m;
for(int i = 1; i <= n; i++) build(i);
for(int i = 1; i <= m; i++) cin >> e[i].u >> e[i].v >> e[i].w;
sort(e + 1, e + 1 + m);
ll res = 0, cur = 0;
for(int i = 1; i <= m; i++){
if(join(e[i].u, e[i].v)){
cur += 1LL * e[i].w;
g[e[i].u].pb({e[i].v, e[i].w});
g[e[i].v].pb({e[i].u, e[i].w});
vis[i] = 1;
}
}
dfs(1, 0);
res = oo;
for(int i = 1; i <= m; i++){
if(!vis[i]){
// cerr << e[i].u << " " << e[i].v << " " << e[i].w << " " << lca(e[i].u, e[i].v) << "\n";
if(lca(e[i].u, e[i].v, e[i].w)) minimize(res, cur - 1LL * lca(e[i].u, e[i].v, e[i].w) + e[i].w);
}
}
cout << (res == oo ? -1 : res);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGRvdWJsZSBsb25nIGRvdWJsZQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBpaSBwYWlyPGludCwgaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbWF4aW1pemUoYSwgYikgYSA9IG1heChhLCBiKQojZGVmaW5lIG1pbmltaXplKGEsIGIpIGEgPSBtaW4oYSwgYikKI2RlZmluZSBjYml0KG4pIF9fYnVpbHRpbl9wb3Bjb3VudChuKQojZGVmaW5lIGdldGJpdChuLCBpKSAobiA+PiBpKSAmIDEKI2RlZmluZSBvbmJpdChuLCBpKSBuIHwgKDEgPDwgaSkKI2RlZmluZSBvZmZiaXQobiwgaSkgbiBeICgxIDw8IGkpCiNkZWZpbmUgVEFTSyAiMSIKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDNlNSArIDU7CmNvbnN0IGxsIG9vID0gMWUxODsKY29uc3QgaW50IGJhc2UgPSAzMTE7Ci8vY29uc3QgaW50IHN6ID0gc3FydChOKTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmludCBwYXJbTl0sIHN6W05dLCBoW05dLCBteFsxOV1bTl0sIG14MlsxOV1bTl0sIHVwWzE5XVtOXSwgdmlzW05dOwppbnQgbiwgbTsKdmVjdG9yPGlpPiBnW05dOwoKc3RydWN0IGVkZ2UKewogICAgaW50IHUsIHYsIHc7CgogICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBlZGdlICZiKSBjb25zdAogICAgewogICAgICAgIHJldHVybiB3IDwgYi53OwogICAgfQp9IGVbTl07Cgp2b2lkIGJ1aWxkKGludCB1KQp7CiAgICBzelt1XSA9IDE7CiAgICBwYXJbdV0gPSB1Owp9CgppbnQgZihpbnQgdSkgeyByZXR1cm4gdSA9PSBwYXJbdV0gPyB1IDogcGFyW3VdID0gZihwYXJbdV0pOyB9Cgpib29sIGpvaW4oaW50IHUsIGludCB2KQp7CiAgICB1ID0gZih1KTsKICAgIHYgPSBmKHYpOwogICAgaWYodSAhPSB2KXsKICAgICAgICBpZihzelt1XSA8IHN6W3ZdKSBzd2FwKHUsIHYpOwogICAgICAgIHN6W3VdICs9IHN6W3ZdOwogICAgICAgIHBhclt2XSA9IHU7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmludCBtYXgyKGludCBhLCBpbnQgYiwgaW50IGMsIGludCBkKQp7CiAgICBpbnQgbXggPSBtYXgobWF4KGEsIGIpLCBtYXgoYywgZCkpOwogICAgaW50IHJlcyA9IDA7CiAgICBpZihhICE9IG14KSBtYXhpbWl6ZShyZXMsIGEpOwogICAgaWYoYiAhPSBteCkgbWF4aW1pemUocmVzLCBiKTsKICAgIGlmKGMgIT0gbXgpIG1heGltaXplKHJlcywgYyk7CiAgICBpZihkICE9IG14KSBtYXhpbWl6ZShyZXMsIGQpOwogICAgcmV0dXJuIHJlczsKfQoKdm9pZCBkZnMoaW50IHUsIGludCBwKQp7CiAgICB1cFswXVt1XSA9IHA7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IDE4OyBpKyspewogICAgICAgIHVwW2ldW3VdID0gdXBbaSAtIDFdW3VwW2kgLSAxXVt1XV07CiAgICAgICAgbXhbaV1bdV0gPSBtYXgobXhbaSAtIDFdW3VdLCBteFtpIC0gMV1bdXBbaSAtIDFdW3VdXSk7CiAgICAgICAgbXgyW2ldW3VdID0gbWF4MihteDJbaSAtIDFdW3VdLCBteDJbaSAtICAxXVt1cFtpIC0gMV1bdV1dLCBteFtpIC0gMV1bdV0sIG14W2kgLSAxXVt1cFtpIC0gMV1bdV1dKTsKICAgIH0KICAgIGZvcihpaSB2IDogZ1t1XSl7CiAgICAgICAgaWYodi5maSA9PSBwKSBjb250aW51ZTsKICAgICAgICBoW3YuZmldID0gaFt1XSArIDE7CiAgICAgICAgbXhbMF1bdi5maV0gPSB2LnNlOwogICAgICAgIGRmcyh2LmZpLCB1KTsKICAgIH0KfQoKaW50IGxjYShpbnQgdSwgaW50IHYsIGludCB3KQp7CiAgICBpbnQgcmVzID0gMCwgcmVzMiA9IDA7CiAgICBpZihoW3VdICE9IGhbdl0pewogICAgICAgIGlmKGhbdV0gPCBoW3ZdKSBzd2FwKHUsIHYpOwogICAgICAgIGludCBkID0gaFt1XSAtIGhbdl07CiAgICAgICAgZm9yKGludCBpID0gMTg7IGkgPj0gMDsgaS0tKXsKICAgICAgICAgICAgaWYoZ2V0Yml0KGQsIGkpKXsKICAgICAgICAgICAgICAgIHJlczIgPSBtYXgyKG14W2ldW3VdLCBteDJbaV1bdV0sIHJlcywgcmVzMik7CiAgICAgICAgICAgICAgICBtYXhpbWl6ZShyZXMsIG14W2ldW3VdKTsKICAgICAgICAgICAgICAgIHUgPSB1cFtpXVt1XTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmKHUgPT0gdikgcmV0dXJuIChyZXMgPT0gdyA/IHJlczIgOiByZXMpOwogICAgZm9yKGludCBpID0gMTg7IGkgPj0gMDsgaS0tKXsKICAgICAgICBpZih1cFtpXVt1XSAhPSB1cFtpXVt2XSl7CiAgICAgICAgICAgIHJlczIgPSBtYXgyKHJlczIsIG14W2ldW3VdLCBteFtpXVt2XSwgbXgyW2ldW3ZdKTsKICAgICAgICAgICAgcmVzMiA9IG1heDIocmVzMiwgbXhbaV1bdl0sIG14MltpXVt1XSwgcmVzKTsKICAgICAgICAgICAgbWF4aW1pemUocmVzLCBteFtpXVt1XSk7CiAgICAgICAgICAgIG1heGltaXplKHJlcywgbXhbaV1bdl0pOwogICAgICAgICAgICB1ID0gdXBbaV1bdV07CiAgICAgICAgICAgIHYgPSB1cFtpXVt2XTsKICAgICAgICB9CiAgICB9CiAgICByZXMyID0gbWF4MihyZXMyLCBteFswXVt1XSwgbXhbMF1bdl0sIG14MlswXVt2XSk7CiAgICByZXMyID0gbWF4MihyZXMyLCBteFswXVt2XSwgbXgyWzBdW3VdLCByZXMpOwogICAgbWF4aW1pemUocmVzLCBteFswXVt1XSk7CiAgICBtYXhpbWl6ZShyZXMsIG14WzBdW3ZdKTsKICAgIGlmKHJlcyA9PSB3KSByZXR1cm4gcmVzMjsKICAgIHJldHVybiByZXM7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgY291dC50aWUoTlVMTCk7CgogICAgaWYoZm9wZW4oVEFTSyIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3BlbihUQVNLIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBjaW4gPj4gbiA+PiBtOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGJ1aWxkKGkpOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspIGNpbiA+PiBlW2ldLnUgPj4gZVtpXS52ID4+IGVbaV0udzsKICAgIHNvcnQoZSArIDEsIGUgKyAxICsgbSk7CiAgICBsbCByZXMgPSAwLCBjdXIgPSAwOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspewogICAgICAgIGlmKGpvaW4oZVtpXS51LCBlW2ldLnYpKXsKICAgICAgICAgICAgY3VyICs9IDFMTCAqIGVbaV0udzsKICAgICAgICAgICAgZ1tlW2ldLnVdLnBiKHtlW2ldLnYsIGVbaV0ud30pOwogICAgICAgICAgICBnW2VbaV0udl0ucGIoe2VbaV0udSwgZVtpXS53fSk7CiAgICAgICAgICAgIHZpc1tpXSA9IDE7CiAgICAgICAgfQogICAgfQogICAgZGZzKDEsIDApOwogICAgcmVzID0gb287CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKyl7CiAgICAgICAgaWYoIXZpc1tpXSl7Ci8vICAgICAgICAgICAgY2VyciA8PCBlW2ldLnUgPDwgIiAiIDw8IGVbaV0udiA8PCAiICIgPDwgZVtpXS53IDw8ICIgIiA8PCBsY2EoZVtpXS51LCBlW2ldLnYpIDw8ICJcbiI7CiAgICAgICAgICAgIGlmKGxjYShlW2ldLnUsIGVbaV0udiwgZVtpXS53KSkgbWluaW1pemUocmVzLCBjdXIgLSAxTEwgKiBsY2EoZVtpXS51LCBlW2ldLnYsIGVbaV0udykgKyBlW2ldLncpOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgKHJlcyA9PSBvbyA/IC0xIDogcmVzKTsKICAgIHJldHVybiAwOwp9Cg==