#include using namespace std; using ll = long long; using vi = vector; using vb = vector; using vd = vector; using vl = vector; using vvi = vector; using vvb = vector; using vvd = vector; using vvl = vector; #define REP(i,n) for(ll i=0; i<(n); ++i) ll dfs(const vector>> & g, ll id, ll goal, vl & store) { if (store[id] != -1) return store[id]; if (id == goal) return 1; if (g[id].empty()) return 0; ll num = 0; for (auto&& e : g[id]) num += e.second * dfs(g, e.first, goal, store); return store[id] = num; } int main() { ll n,m; cin >> n >> m; vector>> g(n); vb purchases_b(n, true); REP(i, m) { ll p, q, r; cin >> p >> q >> r; g[p-1].push_back({ r-1, q }); purchases_b[r-1] = false; } vl purchases_id; REP(i, n) if (purchases_b[i]) purchases_id.push_back(i); vl purchases_num(n, 0); REP(i, purchases_id.size()) { vl store(n, -1); purchases_num[purchases_id[i]] = dfs(g, purchases_id[i], n - 1, store); } REP(i, n - 1) cout << purchases_num[i] << endl; return 0; }