/*
就是1232,,133的组合
*/
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int ch[102];
struct Line
{
int s, e;
int v;
}L;
vector<Line> vec;
bool cmp(Line x, Line y) { return x.v < y.v; }
int Find(int x)
{
while(x != ch[x])
x = ch[x];
return x;
}
int main()
{
int n, m;
while(scanf("%d%d", &n, &m) && n)
{
int i, j;
vec.clear();
for( i=0; i <= m; i++ )
ch[i] = i;
for( i=0; i < n; i++ )
{
scanf("%d%d%d", &L.s, &L.e, &L.v);
vec.push_back(L);
}
sort(vec.begin(), vec.end(), cmp);
int sum=0;
for( i=0; i < vec.size(); i++ )
{
L = vec.at(i);
int x = Find(L.s);
int y = Find(L.e);
if(x > y)
ch[x] = y;
else if(x < y)
ch[y] = x;
else continue;
sum += L.v;
}
int p=0;
for( i=1; i <= m; i++ )
{
if(ch[i] == i)
p++;
}
if(p > 1)
printf("?\n");
else
printf("%d\n", sum);
}
return 0;
}