#include <bits/stdc++.h>
using namespace std;
const long long INF64 = 1000000000000000000;
const long long BigPrime = 252097800623;
const long double LDINF = 1000000000000;
const long long Mmod = 998244353;
const long long INF = 1000000000;
const long long Mod = 1000000007;
const long double PI = acosl(-1.);
const long double Eps = 10e-10;
const long long Prime = 131;
const unsigned int N = 1000005;
const unsigned int Len = 5005;
int n, m;
vector<int> g[N];
int a[N], b[N], c[N];
int parent[N], sz[N];
int ina[N], inb[N], mid[N], pat[N];
vector<int> span, mas;
int findher(int v) {
  if (v == parent[v]) return v;
  return parent[v] = findher(parent[v]);
}
void tmerge(int a, int b) {
  a = findher(a);
  b = findher(b);
  if (sz[a] < sz[b]) swap(a, b);
  parent[b] = a;
  sz[a] += sz[b];
}
void check(int q) {
  for (int i = 1; i <= n; i++) {
    parent[i] = i;
    sz[i] = 1;
  }
  vector<pair<int, int> > g;
  for (int i = 0; i < q; i++) {
    if (ina[i] <= inb[i]) {
      mid[i] = (ina[i] + inb[i]) / 2;
      g.push_back(make_pair(mid[i], i));
    }
  }
  sort(g.begin(), g.end());
  int it = 0;
  for (int i = 0; i < (int)span.size(); i++) {
    int id = span[i];
    while (it < (int)g.size() && g[it].first == i) {
      if (findher(a[mas[g[it].second]]) == findher(b[mas[g[it].second]])) {
        inb[g[it].second] = g[it].first - 1;
      } else {
        ina[g[it].second] = g[it].first + 1;
        pat[g[it].second] = c[id];
      }
      ++it;
    }
    int a = ::a[id], b = ::b[id];
    tmerge(a, b);
  }
}
void solve() {
  cin >> n >> m;
  for (int i = 1; i <= m; i++) {
    scanf("%d%d%d", &a[i], &b[i], &c[i]);
  }
  vector<pair<int, int> > G;
  for (int i = 1; i <= m; i++) {
    G.push_back(make_pair(c[i], i));
  }
  sort(G.begin(), G.end());
  for (int i = 1; i <= n; i++) {
    parent[i] = i;
    sz[i] = 1;
  }
  for (int i = 0; i < m; i++) {
    int id = G[i].second;
    int a = ::a[id], b = ::b[id];
    if (findher(a) != findher(b)) {
      tmerge(a, b);
      span.push_back(id);
    } else {
      mas.push_back(id);
    }
  }
  sort(mas.begin(), mas.end());
  for (int i = 0; i < (int)mas.size(); i++) {
    ina[i] = 0;
    inb[i] = (int)span.size() - 1;
  }
  while (true) {
    bool flag = false;
    for (int i = 0; i < (int)mas.size(); i++) {
      if (ina[i] <= inb[i]) {
        flag = true;
      }
    }
    if (flag == false) break;
    check((int)mas.size());
  }
  for (int i = 0; i < (int)mas.size(); i++) {
    printf("%d\n", pat[i]);
  }
}
int main() {
  int testcases = 1;
  for (int _ = 0; _ < testcases; ++_) {
    solve();
  }
  return 0;
}
