#include <bits/stdc++.h>
#define NMAX 50005
using namespace std;
struct node
{
int u ;
int v ;
int price;
int id;
};
int n , m;
long long s;
int DSU[NMAX], sizeDSU[NMAX];
node graph[10*NMAX];
bool check[10*NMAX];
vector<int> location;
long long totalErase=0;
int find_root(int u)
{
return (DSU[u]==u)?u:DSU[u]=find_root(DSU[u]);
}
bool join(int u ,int v)
{
int root_u = find_root(u);
int root_v = find_root(v);
if(root_u == root_v) return false;
if(sizeDSU[root_u] < sizeDSU[root_v]) swap(root_u , root_v);
DSU[root_v] = root_u;
sizeDSU[root_u] += sizeDSU[root_v];
return true;
}
void enter()
{
cin>> n >> m >> s;
for(int i = 1 ; i <= m ; i++)
{
int u , v , c ;
cin>> u >> v >> c;
graph[i] = {u , v , c , i};
}
for(int i = 1 ; i <= n ; i++)
{
DSU[i] = i;
sizeDSU[i] = 1;
}
}
void process()
{
sort(graph + 1, graph + m + 1, [](node &a , node &b) {return a.price < b.price; });
for(int i = m ; i >= 1 ; i--) if( join(graph[i].u , graph[i].v) ) check[i] = true;
for(int i = 1 ; i <= m ; i++)
{
if(!check[i] && totalErase + graph[i].price <= s)
{
location.push_back(graph[i].id);
totalErase += graph[i].price;
}
}
cout<<location.size()<<'\n';
sort(location.begin() , location.end());
for(int id : location) cout<<id<<" ";
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
cout.tie(nullptr);
enter();
process();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgTk1BWCA1MDAwNQp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgbm9kZQp7CiAgICBpbnQgdSA7CiAgICBpbnQgdiA7CiAgICBpbnQgcHJpY2U7CiAgICBpbnQgaWQ7Cn07CgppbnQgbiAsIG07CmxvbmcgbG9uZyBzOwppbnQgRFNVW05NQVhdLCBzaXplRFNVW05NQVhdOwpub2RlIGdyYXBoWzEwKk5NQVhdOwpib29sIGNoZWNrWzEwKk5NQVhdOwp2ZWN0b3I8aW50PiBsb2NhdGlvbjsKbG9uZyBsb25nIHRvdGFsRXJhc2U9MDsKCmludCBmaW5kX3Jvb3QoaW50ICB1KQp7CiAgICByZXR1cm4gKERTVVt1XT09dSk/dTpEU1VbdV09ZmluZF9yb290KERTVVt1XSk7Cn0KCmJvb2wgam9pbihpbnQgdSAsaW50IHYpCnsKICAgIGludCByb290X3UgPSBmaW5kX3Jvb3QodSk7CiAgICBpbnQgcm9vdF92ID0gZmluZF9yb290KHYpOwoKICAgIGlmKHJvb3RfdSA9PSByb290X3YpICByZXR1cm4gZmFsc2U7CgogICAgaWYoc2l6ZURTVVtyb290X3VdIDwgc2l6ZURTVVtyb290X3ZdKSAgc3dhcChyb290X3UgLCByb290X3YpOwogICAgRFNVW3Jvb3Rfdl0gPSByb290X3U7CiAgICBzaXplRFNVW3Jvb3RfdV0gKz0gc2l6ZURTVVtyb290X3ZdOwogICAgcmV0dXJuIHRydWU7Cn0KCnZvaWQgZW50ZXIoKQp7CiAgICBjaW4+PiBuID4+IG0gPj4gczsKICAgIGZvcihpbnQgaSA9IDEgOyBpIDw9IG0gOyBpKyspCiAgICB7CiAgICAgICAgaW50IHUgLCB2ICwgYyA7CiAgICAgICAgY2luPj4gdSA+PiB2ID4+IGM7CiAgICAgICAgZ3JhcGhbaV0gPSB7dSAsIHYgLCBjICwgaX07CiAgICB9CgogICAgZm9yKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKykKICAgIHsKICAgICAgICBEU1VbaV0gPSBpOwogICAgICAgIHNpemVEU1VbaV0gID0gMTsKICAgIH0KCn0Kdm9pZCBwcm9jZXNzKCkKewogICAgc29ydChncmFwaCArIDEsIGdyYXBoICsgbSArIDEsIFtdKG5vZGUgJmEgLCBub2RlICZiKSB7cmV0dXJuIGEucHJpY2UgPCBiLnByaWNlOyB9KTsKCiAgICBmb3IoaW50IGkgPSBtIDsgaSA+PSAxIDsgaS0tKSAgIGlmKCBqb2luKGdyYXBoW2ldLnUgLCBncmFwaFtpXS52KSApIGNoZWNrW2ldID0gdHJ1ZTsKCiAgICBmb3IoaW50IGkgPSAxIDsgaSA8PSBtIDsgaSsrKQogICAgewogICAgICAgIGlmKCFjaGVja1tpXSAmJiB0b3RhbEVyYXNlICsgZ3JhcGhbaV0ucHJpY2UgPD0gcykKICAgICAgICB7CiAgICAgICAgICAgIGxvY2F0aW9uLnB1c2hfYmFjayhncmFwaFtpXS5pZCk7CiAgICAgICAgICAgIHRvdGFsRXJhc2UgKz0gZ3JhcGhbaV0ucHJpY2U7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQ8PGxvY2F0aW9uLnNpemUoKTw8J1xuJzsKCiAgICBzb3J0KGxvY2F0aW9uLmJlZ2luKCkgLCBsb2NhdGlvbi5lbmQoKSk7CiAgICBmb3IoaW50IGlkIDogbG9jYXRpb24pICBjb3V0PDxpZDw8IiAiOwp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKICAgIGVudGVyKCk7CiAgICBwcm9jZXNzKCk7CiAgICByZXR1cm4gMDsKfQo=