#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pi pair<int,int>
#define nn '\n'
const int N = 200000 + 5;
const int K = 30; // log2(1e9) < 30
const long long NEG = -1e18;
int n, m;
vector<pi> adj[N];
vector<vector<long long>> dp;
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y, w;
cin >> x >> y >> w;
adj[x].push_back({y, w});
}
dp.assign(n + 1, vector<long long>(K + 1, NEG));
// (profit, node, steps)
priority_queue<tuple<long long,int,int>> pq;
dp[1][0] = 0;
pq.push({0, 1, 0});
while (!pq.empty()) {
auto [profit, u, k] = pq.top();
pq.pop();
if (profit < dp[u][k]) continue;
for (auto [v, w] : adj[u]) {
if (k + 1 > K) continue;
long long gain = w >> k;
if (gain == 0) continue;
if (dp[v][k + 1] < profit + gain) {
dp[v][k + 1] = profit + gain;
pq.push({dp[v][k + 1], v, k + 1});
}
}
}
long long ans = 0;
for (int u = 1; u <= n; u++)
for (int k = 0; k <= K; k++)
ans = max(ans, dp[u][k]);
cout << ans << nn;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBwaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgbm4gJ1xuJwoKY29uc3QgaW50IE4gPSAyMDAwMDAgKyA1Owpjb25zdCBpbnQgSyA9IDMwOyAgICAgICAgICAgICAgIC8vIGxvZzIoMWU5KSA8IDMwCmNvbnN0IGxvbmcgbG9uZyBORUcgPSAtMWUxODsKCmludCBuLCBtOwp2ZWN0b3I8cGk+IGFkaltOXTsKdmVjdG9yPHZlY3Rvcjxsb25nIGxvbmc+PiBkcDsKCmludDMyX3QgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgewogICAgICAgIGludCB4LCB5LCB3OwogICAgICAgIGNpbiA+PiB4ID4+IHkgPj4gdzsKICAgICAgICBhZGpbeF0ucHVzaF9iYWNrKHt5LCB3fSk7CiAgICB9CgogICAgZHAuYXNzaWduKG4gKyAxLCB2ZWN0b3I8bG9uZyBsb25nPihLICsgMSwgTkVHKSk7CgogICAgLy8gKHByb2ZpdCwgbm9kZSwgc3RlcHMpCiAgICBwcmlvcml0eV9xdWV1ZTx0dXBsZTxsb25nIGxvbmcsaW50LGludD4+IHBxOwoKICAgIGRwWzFdWzBdID0gMDsKICAgIHBxLnB1c2goezAsIDEsIDB9KTsKCiAgICB3aGlsZSAoIXBxLmVtcHR5KCkpIHsKICAgICAgICBhdXRvIFtwcm9maXQsIHUsIGtdID0gcHEudG9wKCk7CiAgICAgICAgcHEucG9wKCk7CgogICAgICAgIGlmIChwcm9maXQgPCBkcFt1XVtrXSkgY29udGludWU7CgogICAgICAgIGZvciAoYXV0byBbdiwgd10gOiBhZGpbdV0pIHsKICAgICAgICAgICAgaWYgKGsgKyAxID4gSykgY29udGludWU7CgogICAgICAgICAgICBsb25nIGxvbmcgZ2FpbiA9IHcgPj4gazsKICAgICAgICAgICAgaWYgKGdhaW4gPT0gMCkgY29udGludWU7CgogICAgICAgICAgICBpZiAoZHBbdl1bayArIDFdIDwgcHJvZml0ICsgZ2FpbikgewogICAgICAgICAgICAgICAgZHBbdl1bayArIDFdID0gcHJvZml0ICsgZ2FpbjsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2RwW3ZdW2sgKyAxXSwgdiwgayArIDF9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsb25nIGxvbmcgYW5zID0gMDsKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykKICAgICAgICBmb3IgKGludCBrID0gMDsgayA8PSBLOyBrKyspCiAgICAgICAgICAgIGFucyA9IG1heChhbnMsIGRwW3VdW2tdKTsKCiAgICBjb3V0IDw8IGFucyA8PCBubjsKICAgIHJldHVybiAwOwp9Cg==