#include using namespace std; typedef long long ll; typedef vector< int > vi; typedef vector< vi > vvi; typedef vector< ll > vl; typedef vector< vl > vvl; typedef pair< int, int > pii; typedef vector< pii > vp; typedef vector< vp > vvp; typedef vector< double > vd; typedef vector< vd > vvd; typedef vector< string > vs; template< class T1, class T2 > int upmin( T1 &x, T2 v ){ if( x > v ){ x = v; return 1; } return 0; } template< class T1, class T2 > int upmax( T1 &x, T2 v ){ if( x < v ){ x = v; return 1; } return 0; } const int INF = 0x3f3f3f3f; int N; int M; vi P, Q, R; void init(){ cin >> N; cin >> M; P = Q = R = vi( M ); for( int i = 0; i < M; ++i ) cin >> P[ i ] >> Q[ i ] >> R[ i ], --P[ i ], --R[ i ]; } vvp G; vl dp; vi vis; vi nlf; // not leaf void dfs( int u ){ if( vis[ u ] ) return; vis[ u ] = 1; for( int i = 0; i < G[ u ].size(); ++i ){ dfs( G[ u ][ i ].second ); nlf[ G[ u ][ i ].second ] = 1; dp[ u ] += dp[ G[ u ][ i ].second ] * G[ u ][ i ].first; } } void preprocess(){ G = vvp( N ); for( int i = 0; i < M; ++i ) G[ P[ i ] ].emplace_back( Q[ i ], R[ i ] ); dp = vl( N ); vis = vi( N ); nlf = vi( N ); dp[ N - 1 ] = vis[ N - 1 ] = 1; for( int i = 0; i < N - 1; ++i ) if( not vis[ i ] ) dfs( i ); } void solve(){ for( int i = 0; i < N - 1; ++i ){ if( nlf[ i ] ) dp[ i ] = 0; cout << dp[ i ] << endl; } } signed main(){ ios::sync_with_stdio( 0 ); init(); preprocess(); solve(); return 0; }