oasis in desert

Time Limit: 4000ms
Memory Limit: 65536KB
This problem will be judged on HDU. Original ID: 5899
64-bit integer IO format: %I64d      Java class name: Main

Description

There are N oases connected by M roads in the desert,and each road is L km long.Now a traveler who can at most walk K km with his supplies.

We define two concept now:

1.The Biggest Dangerous Oasis List: For every pair of oases in the list,their minimum distance should be longer than K km.And the size of The Biggest Dangerous Oasis List is biggest among lists which meet the condition.

2.The Smallest Safe Oasis List:for every pair of oases in the desert,if their minimum distance is shorter than K km,the list should contain at least one of them .And the size of The Smallest Safe Oasis List is smallest among lists which meet the condition.

Now the traveler wants to get a list which is both The Biggest Dangerous Oasis List and The Smallest Safe Oasis List.

Input

There is a t in the first line,means k cases.In each case,there is firstly n (0<= n <= 500 ),m(0<=m<=n*(n-1)/2) and k(0<=k<=100000).Then m lines, each line input a,b(1<=a,b<=n),and l(0<=l<=100000),means there is a road which is l km long between a and b.

Output

for each case,firstly the size of the list,then print the oases in the list in increasing order,separated by spaces.
If there are multiple answers, print the lexicographically smallest one.
If there is no list, output "Impossible"

Sample Input

1
6 7 30
1 2 40
1 3 20
1 4 30
2 3 15
5 3 20
5 6 20
3 6 50

Sample Output

3
1 2 5

Source

Language: 
Theme: 
Share Code? 

Powered by NB231 | Current Style: .