#include using namespace std; int N, M; vector> G[110]; int memo[110][110]; int seen[110]; void dfs(int idx) { if (seen[idx]) return; seen[idx] = 1; if (G[idx].size() == 0) { memo[idx][idx] = 1; return; } for (auto& p : G[idx]) { dfs(p.first); for (int i = 1; i < N; i++) { memo[idx][i] += p.second * memo[p.first][i]; } } } int main() { cin >> N >> M; while (M--) { int P, Q, R; cin >> P >> Q >> R; G[R].push_back({P, Q}); } dfs(N); for (int i = 1; i < N; i++) { cout << memo[N][i] << endl; } }