#include <bits/stdc++.h>
using namespace std;
int a, b, c, d, e, f, g, h, i, j, k;
struct node {
  int u, v, w;
  int num;
  friend bool operator<(const node &x, const node &y) {
    return x.w < y.w || (x.w == y.w && x.u < y.u);
  }
};
struct node H[100005];
struct node G[100005];
int low, high, mid;
int CC;
int father[5005];
int an[1000005];
int Find(int x) {
  if (father[x] == x) return x;
  father[x] = Find(father[x]);
  return father[x];
}
bool check(int x) {
  int ii, jj, kk;
  int kkk;
  kk = 0;
  kkk = 0;
  for (ii = 1; ii <= b; ii++)
    if (G[ii].u == 1) G[ii].w += x;
  sort(G + 1, G + b + 1);
  for (ii = 1; ii <= a; ii++) father[ii] = ii;
  for (ii = 1; ii <= b; ii++) {
    c = Find(G[ii].u);
    d = Find(G[ii].v);
    if (c != d) {
      if (G[ii].u == 1) kk++;
      if (kk >= k) return true;
      father[c] = d;
    }
  }
  if (kk >= k) return true;
  return false;
}
int main() {
  scanf("%d%d%d", &a, &b, &k);
  if (k == 0) {
    if (a != 1) {
      printf("-1\n");
      return 0;
    }
  }
  for (i = 1; i <= b; i++) {
    scanf("%d%d%d", &c, &d, &e);
    G[i].u = c;
    G[i].v = d;
    G[i].w = e;
    G[i].num = i;
    if (G[i].u > G[i].v) swap(G[i].u, G[i].v);
  }
  memcpy(H, G, sizeof(H));
  low = -100000;
  high = 100000;
  CC = -100000;
  CC--;
  while (low <= high) {
    mid = (low + high) >> 1;
    if (check(mid)) {
      if (mid > CC) CC = mid;
      low = mid + 1;
    } else
      high = mid - 1;
    memcpy(G, H, sizeof(G));
  }
  if (CC == -100000 - 1) {
    printf("-1\n");
    return 0;
  }
  e = 0;
  for (i = 1; i <= b; i++)
    if (G[i].u == 1) G[i].w += CC;
  sort(G + 1, G + b + 1);
  for (i = 1; i <= a; i++) father[i] = i;
  for (i = 1; i <= b; i++) {
    c = Find(G[i].u);
    d = Find(G[i].v);
    if (c != d) {
      if (G[i].u == 1) e++;
      if (e > k) {
        e--;
        continue;
      }
      an[++an[0]] = G[i].num;
      father[c] = d;
    }
  }
  if (an[0] < a - 1) {
    printf("-1\n");
    return 0;
  }
  printf("%d\n", a - 1);
  for (i = 1; i <= an[0]; i++) printf("%d ", an[i]);
  printf("\n");
  return 0;
}
