/* Author : Nguyen Thanh Tung */
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
typedef pair<int, int> ii;
const int N = 1e3 + 7;
const long long oo = 1e18 + 7;
const long long MOD = 1e9 + 7;
struct edges {
int u, v, w;
};
int n, m;
int par[N], sz[N];
vector<edges> adj;
void make_set() {
for(int i = 0; i < n; ++i) {
par[i] = i;
sz[i] = 1;
}
}
int find_set(int v) {
if(v == par[v]) {
return v;
}
return par[v] = find_set(par[v]);
}
bool union_sets(int a, int b) {
a = find_set(a);
b = find_set(b);
if(a == b) {
return false;
}
if(sz[a] < sz[b]) {
swap(a, b);
}
sz[a] += sz[b];
par[b] = a;
return true;
}
bool cmp(edges a, edges b) {
return a.w < b.w;
}
void kruskal() {
vector<edges> mst;
int d = 0;
sort(adj.begin(), adj.end(), cmp);
for(int i = 0; i < m; ++i) {
if(mst.size() == n - 1) {
break;
}
edges e = adj[i];
if(union_sets(e.u, e.v)) {
mst.push_back(e);
d += e.w;
}
}
if(mst.size() != n - 1) {
cout << "Ko Lien Thong";
}
else {
cout << d << endl;
for(auto i : mst) {
cout << i.u << " " << i.v << " " << i.w << endl;
}
}
}
void solve() {
cin >> n >> m;
for(int i = 1; i <= m; ++i) {
int u, v, w;
cin >> u >> v >> w;
edges tmp = {u, v, w};
adj.push_back(tmp);
}
make_set();
kruskal();
}
#define TASK "code"
signed main () {
ios_base::sync_with_stdio (false);
cin.tie(nullptr), cout.tie(nullptr);
if (fopen(TASK".inp", "r")) {
freopen(TASK".inp", "r", stdin);
freopen(TASK".out", "w", stdout);
}
int T = 1;
//cin >> T;
while(T--) {
solve();
}
return 0;
}
LyogQXV0aG9yIDogTmd1eWVuIFRoYW5oIFR1bmcgKi8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKI2RlZmluZSBlbmRsICAgICAgICAgICAgICAgICAnXG4nCiNkZWZpbmUgaW50ICAgICAgICAgICAgICAgICAgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2UgICAgICAgICAgICAgIHN0ZDsKCnR5cGVkZWYgcGFpcjxpbnQsIGludD4gICAgICAgaWk7Cgpjb25zdCBpbnQgICAgICAgTiAgICAgICAgICAgID0gMWUzICsgNzsKY29uc3QgbG9uZyBsb25nIG9vICAgICAgICAgICA9IDFlMTggKyA3Owpjb25zdCBsb25nIGxvbmcgTU9EICAgICAgICAgID0gMWU5ICsgNzsKCnN0cnVjdCBlZGdlcyB7CglpbnQgdSwgdiwgdzsKfTsKCmludCBuLCBtOwppbnQgcGFyW05dLCBzeltOXTsKdmVjdG9yPGVkZ2VzPiBhZGo7Cgp2b2lkIG1ha2Vfc2V0KCkgewoJZm9yKGludCBpID0gMDsgaSA8IG47ICsraSkgewoJCXBhcltpXSA9IGk7CgkJc3pbaV0gPSAxOwoJfQp9CgppbnQgZmluZF9zZXQoaW50IHYpIHsKCWlmKHYgPT0gcGFyW3ZdKSB7CgkJcmV0dXJuIHY7Cgl9CglyZXR1cm4gcGFyW3ZdID0gZmluZF9zZXQocGFyW3ZdKTsKfQoKYm9vbCB1bmlvbl9zZXRzKGludCBhLCBpbnQgYikgewoJYSA9IGZpbmRfc2V0KGEpOwoJYiA9IGZpbmRfc2V0KGIpOwoJaWYoYSA9PSBiKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoJaWYoc3pbYV0gPCBzeltiXSkgewoJCXN3YXAoYSwgYik7Cgl9CglzelthXSArPSBzeltiXTsKCXBhcltiXSA9IGE7CglyZXR1cm4gdHJ1ZTsKfQoKYm9vbCBjbXAoZWRnZXMgYSwgZWRnZXMgYikgewoJcmV0dXJuIGEudyA8IGIudzsKfQoKdm9pZCBrcnVza2FsKCkgewoJdmVjdG9yPGVkZ2VzPiBtc3Q7CglpbnQgZCA9IDA7Cglzb3J0KGFkai5iZWdpbigpLCBhZGouZW5kKCksIGNtcCk7Cglmb3IoaW50IGkgPSAwOyBpIDwgbTsgKytpKSB7CgkJaWYobXN0LnNpemUoKSA9PSBuIC0gMSkgewoJCQlicmVhazsKCQl9CgkJZWRnZXMgZSA9IGFkaltpXTsKCQlpZih1bmlvbl9zZXRzKGUudSwgZS52KSkgewoJCQltc3QucHVzaF9iYWNrKGUpOwoJCQlkICs9IGUudzsKCQl9Cgl9CglpZihtc3Quc2l6ZSgpICE9IG4gLSAxKSB7CgkJY291dCA8PCAiS28gTGllbiBUaG9uZyI7Cgl9CgllbHNlIHsKCQljb3V0IDw8IGQgPDwgZW5kbDsKCQlmb3IoYXV0byBpIDogbXN0KSB7CgkJCWNvdXQgPDwgaS51IDw8ICIgIiA8PCBpLnYgPDwgIiAiIDw8IGkudyA8PCBlbmRsOwoJCX0KCX0KfQoKdm9pZCBzb2x2ZSgpIHsKCWNpbiA+PiBuID4+IG07Cglmb3IoaW50IGkgPSAxOyBpIDw9IG07ICsraSkgewoJCWludCB1LCB2LCB3OwoJCWNpbiA+PiB1ID4+IHYgPj4gdzsKCQllZGdlcyB0bXAgPSB7dSwgdiwgd307CgkJYWRqLnB1c2hfYmFjayh0bXApOwoJfQoJbWFrZV9zZXQoKTsKCWtydXNrYWwoKTsKfQoKI2RlZmluZSBUQVNLICJjb2RlIgoKc2lnbmVkIG1haW4gKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyAoZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CiAgICBpZiAoZm9wZW4oVEFTSyIuaW5wIiwgInIiKSkgewogICAgICAgZnJlb3BlbihUQVNLIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgIGZyZW9wZW4oVEFTSyIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW50IFQgPSAxOwogICAgLy9jaW4gPj4gVDsKICAgIHdoaWxlKFQtLSkgewogICAgICAgIHNvbHZlKCk7ICAgIAogICAgfQogICAgcmV0dXJuIDA7Cn0K