import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
int minCost = Integer.MAX_VALUE, minDis = Integer.MAX_VALUE;
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String[] nc = str.split(" ");
int N = Integer.parseInt(nc[0]);
int C = Integer.parseInt(nc[1]);
// // 初始化距离数组
// int[][] dis = new int[N][N];
Map<HashMap,Integer> map= new HashMap<>();
for(int i =0;i<N*(N-1)/2;i++){
String strs = in.nextLine();
String[] nums = strs.split(" ");
// 浮桥跨桥的索引
int l = Integer.parseInt(nums[0]);
int m = Integer.parseInt(nums[1]);
// // 两岛屿之间的距离
// dis[l][m] = Integer.parseInt(nums[2]);
// dis[m][l] = Integer.parseInt(nums[2]);
HashMap<Integer,Integer> pair = new HashMap<>();
pair.put(l,m);
map.put(pair,Integer.parseInt(nums[2]));
}
// krukal算法
while(minPay(map,N)!=Integer.MAX_VALUE){
minCost+= minPay(map,N);
}
System.out.println(minCost*C) ;
}
public static int minPay(Map<HashMap,Integer> map,int N){
int min = Integer.MAX_VALUE;
HashMap<Integer,Integer> minpair = new HashMap<>();
HashMap<Integer,Integer> pair2 = new HashMap<>();
for(int i=1;i<=N;i++){
for(int j=i+1;j<=N;j++){
pair2.clear();
pair2.put(i,j);
if(map.get(pair2)<min){
minpair.clear();
minpair.put(i,j);
min = map.get(pair2);
}
}
}
map.put(minpair,Integer.MAX_VALUE);
return min;
// 找到最小的后将两座岛之间的浮桥价格定为无穷大
}
}