#include <cstdio>
#include <set>
#include <utility>
#include <vector>
#include <tuple>
#include <queue>
#include <unordered_map>
using namespace std;
typedef tuple <int, int, int> T;
int main()
{
int v, e, i, j, k, t, d = 0, cost = 0, pcost = 0X7FFFFFFF;
scanf("%d %d", &v, &e);
vector<unordered_map<int, int>> graph(v + 1);
vector<unordered_map<int, bool>> inc(v + 1);
vector<int> parent(v + 1);
vector<int> depth(v + 1);
priority_queue<T, vector<T>, greater<T>> edge;
for (i = 0; i < e; i++)
{
scanf("%d %d %d", &j, &k, &t);
graph[j].insert(pair<int, int>(k, t));
graph[k].insert(pair<int, int>(j, t));
inc[j].insert(pair<int, bool>(k, false));
inc[k].insert(pair<int, bool>(j, false));
}
auto iter = graph[1].begin();
for (; iter != graph[1].end(); iter++)
edge.push(tuple<int, int, int>(iter->second, 1, iter->first));
parent[1] = -1;
for (i = 1; i < v; i++)
{
while (true)
{
if (edge.empty())
{
printf("-1");
return 0;
}
T ed = edge.top();
edge.pop();
if (parent[get<2>(ed)] == 0)
{
cost += get<0>(ed);
parent[get<2>(ed)] = get<1>(ed);
depth[get<2>(ed)] = depth[get<1>(ed)] + 1;
inc[get<1>(ed)][get<2>(ed)] = true;
inc[get<2>(ed)][get<1>(ed)] = true;
for (iter = graph[get<2>(ed)].begin(); iter != graph[get<2>(ed)].end(); iter++)
{
if (parent[iter->first] == 0)
edge.push(tuple<int, int, int>(iter->second, get<2>(ed), iter->first));
}
break;
}
}
}
for (i = 1; i < v; i++)
{
for (iter = graph[i].begin(); iter != graph[i].end(); iter++)
{
if (i > iter->first || inc[i][iter->first])
continue;
int cursor1 = i, cursor2 = iter->first;
while (cursor1 != cursor2)
{
if (depth[cursor1] > depth[cursor2])
{
if (iter->second - graph[cursor1][parent[cursor1]] < pcost && iter->second - graph[cursor1][parent[cursor1]] > 0)
pcost = iter->second - graph[cursor1][parent[cursor1]];
cursor1 = parent[cursor1];
}
else
{
if (iter->second - graph[cursor2][parent[cursor2]] < pcost && iter->second - graph[cursor2][parent[cursor2]] > 0)
pcost = iter->second - graph[cursor2][parent[cursor2]];
cursor2 = parent[cursor2];
}
}
}
}
if (pcost == 0X7FFFFFFF)
printf("-1");
else
printf("%d", cost + pcost);
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDx0dXBsZT4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgdHVwbGUgPGludCwgaW50LCBpbnQ+IFQ7CgppbnQgbWFpbigpCnsKCWludCB2LCBlLCBpLCBqLCBrLCB0LCBkID0gMCwgY29zdCA9IDAsIHBjb3N0ID0gMFg3RkZGRkZGRjsKCXNjYW5mKCIlZCAlZCIsICZ2LCAmZSk7Cgl2ZWN0b3I8dW5vcmRlcmVkX21hcDxpbnQsIGludD4+IGdyYXBoKHYgKyAxKTsKCXZlY3Rvcjx1bm9yZGVyZWRfbWFwPGludCwgYm9vbD4+IGluYyh2ICsgMSk7Cgl2ZWN0b3I8aW50PiBwYXJlbnQodiArIDEpOwoJdmVjdG9yPGludD4gZGVwdGgodiArIDEpOwoJcHJpb3JpdHlfcXVldWU8VCwgdmVjdG9yPFQ+LCBncmVhdGVyPFQ+PiBlZGdlOwoKCWZvciAoaSA9IDA7IGkgPCBlOyBpKyspCgl7CgkJc2NhbmYoIiVkICVkICVkIiwgJmosICZrLCAmdCk7CgkJZ3JhcGhbal0uaW5zZXJ0KHBhaXI8aW50LCBpbnQ+KGssIHQpKTsKCQlncmFwaFtrXS5pbnNlcnQocGFpcjxpbnQsIGludD4oaiwgdCkpOwoJCWluY1tqXS5pbnNlcnQocGFpcjxpbnQsIGJvb2w+KGssIGZhbHNlKSk7CgkJaW5jW2tdLmluc2VydChwYWlyPGludCwgYm9vbD4oaiwgZmFsc2UpKTsKCX0KCglhdXRvIGl0ZXIgPSBncmFwaFsxXS5iZWdpbigpOwoJZm9yICg7IGl0ZXIgIT0gZ3JhcGhbMV0uZW5kKCk7IGl0ZXIrKykKCQllZGdlLnB1c2godHVwbGU8aW50LCBpbnQsIGludD4oaXRlci0+c2Vjb25kLCAxLCBpdGVyLT5maXJzdCkpOwoJcGFyZW50WzFdID0gLTE7CgoJZm9yIChpID0gMTsgaSA8IHY7IGkrKykKCXsKCQl3aGlsZSAodHJ1ZSkKCQl7CgkJCWlmIChlZGdlLmVtcHR5KCkpCgkJCXsKCQkJCXByaW50ZigiLTEiKTsKCQkJCXJldHVybiAwOwoJCQl9CgkJCVQgZWQgPSBlZGdlLnRvcCgpOwoJCQllZGdlLnBvcCgpOwoJCQlpZiAocGFyZW50W2dldDwyPihlZCldID09IDApCgkJCXsKCQkJCWNvc3QgKz0gZ2V0PDA+KGVkKTsKCQkJCXBhcmVudFtnZXQ8Mj4oZWQpXSA9IGdldDwxPihlZCk7CgkJCQlkZXB0aFtnZXQ8Mj4oZWQpXSA9IGRlcHRoW2dldDwxPihlZCldICsgMTsKCQkJCWluY1tnZXQ8MT4oZWQpXVtnZXQ8Mj4oZWQpXSA9IHRydWU7CgkJCQlpbmNbZ2V0PDI+KGVkKV1bZ2V0PDE+KGVkKV0gPSB0cnVlOwoKCQkJCWZvciAoaXRlciA9IGdyYXBoW2dldDwyPihlZCldLmJlZ2luKCk7IGl0ZXIgIT0gZ3JhcGhbZ2V0PDI+KGVkKV0uZW5kKCk7IGl0ZXIrKykKCQkJCXsKCQkJCQlpZiAocGFyZW50W2l0ZXItPmZpcnN0XSA9PSAwKQoJCQkJCQllZGdlLnB1c2godHVwbGU8aW50LCBpbnQsIGludD4oaXRlci0+c2Vjb25kLCBnZXQ8Mj4oZWQpLCBpdGVyLT5maXJzdCkpOwoJCQkJfQoJCQkJYnJlYWs7CgkJCX0KCQl9Cgl9CgoJZm9yIChpID0gMTsgaSA8IHY7IGkrKykKCXsKCQlmb3IgKGl0ZXIgPSBncmFwaFtpXS5iZWdpbigpOyBpdGVyICE9IGdyYXBoW2ldLmVuZCgpOyBpdGVyKyspCgkJewoJCQlpZiAoaSA+IGl0ZXItPmZpcnN0IHx8IGluY1tpXVtpdGVyLT5maXJzdF0pCgkJCQljb250aW51ZTsKCgkJCWludCBjdXJzb3IxID0gaSwgY3Vyc29yMiA9IGl0ZXItPmZpcnN0OwoJCQl3aGlsZSAoY3Vyc29yMSAhPSBjdXJzb3IyKQoJCQl7CgkJCQlpZiAoZGVwdGhbY3Vyc29yMV0gPiBkZXB0aFtjdXJzb3IyXSkKCQkJCXsKCQkJCQlpZiAoaXRlci0+c2Vjb25kIC0gZ3JhcGhbY3Vyc29yMV1bcGFyZW50W2N1cnNvcjFdXSA8IHBjb3N0ICYmIGl0ZXItPnNlY29uZCAtIGdyYXBoW2N1cnNvcjFdW3BhcmVudFtjdXJzb3IxXV0gPiAwKQoJCQkJCQlwY29zdCA9IGl0ZXItPnNlY29uZCAtIGdyYXBoW2N1cnNvcjFdW3BhcmVudFtjdXJzb3IxXV07CgkJCQkJY3Vyc29yMSA9IHBhcmVudFtjdXJzb3IxXTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQlpZiAoaXRlci0+c2Vjb25kIC0gZ3JhcGhbY3Vyc29yMl1bcGFyZW50W2N1cnNvcjJdXSA8IHBjb3N0ICYmIGl0ZXItPnNlY29uZCAtIGdyYXBoW2N1cnNvcjJdW3BhcmVudFtjdXJzb3IyXV0gPiAwKQoJCQkJCQlwY29zdCA9IGl0ZXItPnNlY29uZCAtIGdyYXBoW2N1cnNvcjJdW3BhcmVudFtjdXJzb3IyXV07CgkJCQkJY3Vyc29yMiA9IHBhcmVudFtjdXJzb3IyXTsKCQkJCX0KCQkJfQoJCX0KCX0KCglpZiAocGNvc3QgPT0gMFg3RkZGRkZGRikKCQlwcmludGYoIi0xIik7CgllbHNlCgkJcHJpbnRmKCIlZCIsIGNvc3QgKyBwY29zdCk7Cn0=