#include <bits/stdc++.h>
using namespace std;
vector<pair<pair<double, long long int>, pair<long long int, long long int>>> v;
long long int P[1000006], S[1000006], A[100005], B[100005], C[100005],
    ans[100005], N, M;
long long int dsu(long long int x, long long int y) {
  long long int i, j;
  i = x;
  while (i != P[i]) {
    P[i] = P[P[i]];
    i = P[i];
  }
  j = y;
  while (j != P[j]) {
    P[j] = P[P[j]];
    j = P[j];
  }
  if (i == j)
    return 1;
  else {
    if (S[i] > S[j]) {
      P[j] = P[i];
      S[i] += S[j];
    } else {
      P[i] = P[j];
      S[j] += S[i];
    }
    return 0;
  }
}
long long int t;
long long int func(double a) {
  int val, i, k = 0;
  t = 0;
  for (i = 0; i <= N; i++) {
    P[i] = i;
    S[i] = i;
  }
  v.clear();
  for (i = 0; i < M; i++) {
    if (A[i] == 1 || B[i] == 1)
      v.push_back(make_pair(make_pair(C[i] + a, i), make_pair(A[i], B[i])));
    else
      v.push_back(make_pair(make_pair(C[i], i), make_pair(A[i], B[i])));
  }
  sort(v.begin(), v.end());
  for (i = 0; i < M; i++) {
    val = dsu(v[i].second.first, v[i].second.second);
    if (val == 0) {
      if (v[i].second.first == 1 || v[i].second.second == 1) k++;
      ans[t] = v[i].first.second;
      t++;
    }
  }
  return k;
}
int main() {
  long long int K, i, j, a, b, c;
  cin >> N >> M >> K;
  if (M < N - 1 || K > M) {
    cout << "-1" << endl;
    return 0;
  }
  for (i = 0; i < M; i++) {
    cin >> a >> b >> c;
    A[i] = a;
    B[i] = b;
    C[i] = c;
  }
  double r = 1000006;
  double l = -1000006;
  double mid;
  for (i = 0; i < 100; i++) {
    mid = (l + r) / 2;
    if (func(mid) < K)
      r = mid;
    else
      l = mid;
  }
  j = func(l);
  if (j == K) {
    cout << N - 1 << endl;
    for (i = 0; i < N - 1; i++) cout << ans[i] + 1 << " ";
    cout << endl;
  } else
    cout << "-1\n";
  return 0;
}
