#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void ckmax(T& x, T y) {
  x = (y > x ? y : x);
}
template <typename T>
inline void ckmin(T& x, T y) {
  x = (y < x ? y : x);
}
const int MAXN = 18;
const long long LL_INF = 1e18;
inline int lowbit(int x) { return x & (-x); }
int n, m, w[MAXN + 5][MAXN + 5];
int id[1 << MAXN];
long long oute_sumw[1 << MAXN];
int ine[MAXN + 5], ine_union[1 << MAXN];
long long dp[1 << MAXN];
int frm[1 << MAXN];
int ans[MAXN + 5];
void get_ans(int mask, int cur_val) {
  if (!mask) return;
  int pre_mask = frm[mask];
  int new_add = (mask ^ pre_mask);
  for (int i = new_add; i; i -= lowbit(i)) {
    ans[id[lowbit(i)]] = cur_val;
  }
  get_ans(pre_mask, cur_val + 1);
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= m; ++i) {
    int u, v, _w;
    cin >> u >> v >> _w;
    w[u][v] = _w;
    ine[v] |= (1 << (u - 1));
  }
  for (int i = 1; i <= n; ++i) id[1 << (i - 1)] = i;
  for (int i = 1; i < (1 << n); ++i) {
    int u = id[lowbit(i)];
    long long sum_from_u = 0;
    long long sum_from_i_to_u = 0;
    for (int j = 1; j <= n; ++j) {
      if ((i >> (j - 1)) & 1)
        sum_from_i_to_u += w[j][u];
      else
        sum_from_u += w[u][j];
    }
    oute_sumw[i] = (oute_sumw[i - lowbit(i)] + sum_from_u - sum_from_i_to_u);
    ine_union[i] = (ine_union[i - lowbit(i)] | ine[u]);
  }
  for (int i = 1; i < (1 << n); ++i) {
    dp[i] = LL_INF;
  }
  for (int i = 0; i < (1 << n) - 1; ++i) {
    if (dp[i] == LL_INF) continue;
    int rest = (((1 << n) - 1) ^ i);
    for (int j = rest; j; j = ((j - 1) & rest)) {
      if ((ine_union[j] & i) == ine_union[j]) {
        if (dp[i + j] > dp[i] + oute_sumw[i]) {
          dp[i + j] = dp[i] + oute_sumw[i];
          frm[i + j] = i;
        }
      }
    }
  }
  get_ans((1 << n) - 1, 1);
  for (int i = 1; i <= n; ++i) cout << ans[i] << " \n"[i == n];
  return 0;
}
