import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static int parent[];//并查集
public static int find(int x){
while(parent[x]!=x) x=parent[x];
return x;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//Kruskal算法
parent=new int[100];
Graph G=new Graph();
Scanner sc1=new Scanner(System.in);
int num1=sc1.nextInt();
int num2=sc1.nextInt();
G.initEdgeNum(num1);//边的数量
G.initVertexNum(num2);//点的数量
G.initEdge();//初始化
for(int i=0;i<G.vertexNum;i++){
parent[i]=i;//初始化并查集
}
int num,i;
for(num=0,i=0;i<G.edgeNum;i++){
int vex1=find(G.edge[i].form);
int vex2=find(G.edge[i].to);
if(vex1!=vex2){
System.out.print("("+G.edge[i].form+","+G.edge[i].to+")");
System.out.println();
parent[vex2]=vex1;
num++;
if(num==num2-1)
return ;
}
}
}
}
class Graph{
EdgeType edge[];//存放所有带权边
int vertexNum,edgeNum;//点和边的数目
//初始化点和边的数目
public void initVertexNum(int num){
vertexNum=num;
}
public void initEdgeNum(int num){
edgeNum=num;
}
public void initEdge(){//初始化所有边
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
edge=new EdgeType[n];
for(int i=0;i<n;i++){
edge[i]=new EdgeType();
edge[i].form=sc.nextInt();
edge[i].to=sc.nextInt();
edge[i].weight=sc.nextInt();
}
}
}
class EdgeType{//存储所有边的属性
int form=0;//起始顶点
int to=0;//结束顶点
int weight=0;//权值
}