#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using vi = vector; using vvi = vector; using vl = vector; using vvl = vector; using vb = vector; using vvb = vector; using vd = vector; using vs = vector; using pii = pair; using pll = pair; using pdd = pair; using vpii = vector; using vpll = vector; using vpdd = vector; const int inf = (1 << 30) - 1; const ll INF = 1LL << 60; //const int MOD = 1000000007; const int MOD = 998244353; struct Edge { int to; ll cost; }; using Graph = vector>; void dfs(int s, Graph& g, ll cost, vl& ans) { if (g[s].size() == 0) { ans[s] += cost; } for (auto& v : g[s]) { dfs(v.to, g, cost * v.cost, ans); } } int main() { int n, m; cin >> n >> m; vi p(m), q(m), r(m); for (int i = 0; i < m; i++) { cin >> p[i] >> q[i] >> r[i]; } vl ans(n + 1, 0); Graph g(n + 1); for (int i = 0; i < m; i++) { g[r[i]].push_back({ p[i], q[i] }); } dfs(n, g, 1, ans); for (int i = 1; i < n; i++) { cout << ans[i] << endl; } return 0; }