- #include <iostream> 
- #include <cstdio> 
- #define ll long long 
- using namespace std; 
- const int maxn = 20; 
- const int oo = 1000000007; 
- int n,m,h; 
- int mat[maxn][maxn],dp[1<<maxn][maxn][maxn]; 
-   
- void enter() 
- { 
- 	int u,v,t; 
- 	for (int i=0; i<=n-1; i++) 
- 		for (int j=0; j<=n-1; j++) 
- 			if (i!=j) 
- 				mat[i][j]=oo; 
- 			else mat[i][j]=0; 
- 	for (int i=0; i<=1<<n; i++) 
- 		for (int j=0; j<=n-1; j++) 
- 			for (int z=0; z<=n-1; z++) 
- 				dp[i][j][z]=oo; 
- 	for (int i=1; i<=m; i++) 
- 	{ 
- 		cin >> u >> v >> t; 
- 		mat[u][v]=min(mat[u][v],t); 
- 		mat[v][u]=min(mat[v][u],t); 
- 	} 
- 	//cout << mat[3][4] << '\n'; 
- } 
- void floyd() 
- { 
- 	for (int x=0; x<=n-1; x++) 
- 		for (int y=0; y<=n-1; y++) 
- 			for (int z=0; z<=n-1; z++) 
- 				mat[y][z]=min(mat[y][z],mat[y][x]+mat[x][z]); 
- } 
- int getbit(int x, int i) 
- { 
- 	return (x >> i) & 1; 
- } 
- int countone(int x) 
- { 
- 	int res=0; 
- 	for (int i=0; i<=n-1; i++) 
- 		if (getbit(x,i)==1) res++; 
- 	return res; 
- } 
- // tra ve bit thu i cua so x 
- int clearbit(int x, int i) 
- { 
- 	return x & (~(1 << i)); 
- }  
- int toggle(int x, int i) 
- { 
- 	int number=x; 
- 	number ^= 1 << i; 
- 	return number; 
- } 
- int caldp(int mask, int u, int v) 
- { 
- 	//cout << mask << ' ' << u << ' ' << v << '\n'; 
- 	if (dp[mask][u][v]==oo) 
- 	{ 
- 		if (countone(mask)==0) dp[mask][u][v]=mat[u][v]; 
- 		else 
- 		{ 
- 			for (int i=0; i<=n-1; i++) 
- 				if (getbit(mask,i)==1) 
- 					dp[mask][u][v]=min(dp[mask][u][v],caldp(clearbit(mask,i),u,i)+mat[i][v]); 
- 		} 
- 	} 
- 	//cout << getbit(mask,n-2) << ' '; 
- 	//for (int i=0; i<=n-1; i++) 
- 	//	cout << getbit(mask,i); 
- 	//cout << ' ' << getbit(mask,u) << ' ' << u << ' ' << v << ' ' << dp[mask][u][v] << '\n'; 
- 	return dp[mask][u][v]; 
- } 
- int no(int x) 
- { 
- 	int xx=x; 
- 	for (int i=0; i<=n-1; i++) 
- 		xx=toggle(xx,i); 
- 	return xx;	 
- } 
- void printbit(int x) 
- { 
- 	for (int i=0; i<=n-1; i++) 
- 		cout << getbit(x,i); 
- 	cout << ' '; 
- } 
- void solve(int t) 
- { 
- 	int res=oo; 
- 	h=n-2; 
- 	//printbit(16); 
- 	//printbit(no(16)); 
- 	//cout << '\n'; 
- 	for (int i=0; i<=1<<(n-1); i++) 
- 		if ((countone(i)==h/2) and (getbit(i,0)!=1) and (getbit(i,n-1)!=1)) 
- 		{ 
- 			int res1=oo,res2=oo,res3=oo,res4=oo; 
- 			for (int j=1; j<=n-2; j++) 
- 				if (getbit(i,j)==1) 
- 				{ 
- 					int mask=clearbit(i,j); 
- 					int mas=clearbit(clearbit(clearbit(no(i),n-1),0),j); 
- 					//cout << getbit(mas,j) << '\n'; 
- 					//printbit(mask); 
- 					//printbit(mas); 
- 					//cout << '\n'; 
- 					res1=min(res1,caldp(mask,0,j)+caldp(mas,n-1,j)); 
- 				} 
- 			for (int j=1; j<=n-2; j++) 
- 				if (getbit(i,j)==1) 
- 				{ 
- 					int mask=clearbit(i,j); 
- 					int mas=clearbit(clearbit(clearbit(no(i),n-1),0),j); 
- 					//cout << getbit(mas,j)<< '\n'; 
- 					//printbit(mask); 
- 					//printbit(mas); 
- 					//cout << '\n'; 
- 					res2=min(res2,caldp(mask,n-1,j)+caldp(mas,0,j)); 
- 				} 
- 			//cout << res1 << ' ' << res2 << '\n'; 
- 			res=min(res,res1+res2);				 
- 		} 
- 	if (n==3) res=(mat[0][1]+mat[1][2])*2; 
- 	cout << "Case " << t << ": " << res << '\n'; 
- } 
- int main() 
- { 
- 	ios_base::sync_with_stdio(0); 
- 	//freopen("1281.INP","r",stdin); 
- 	//freopen("1281.OUT","w",stdout); 
- 	int dem=0; 
- 	while (cin >> n >> m) 
- 	{ 
- 		dem++; 
- 		enter(); 
- 		floyd(); 
- 		solve(dem); 
- 		//cout << "OK\n"; 
- 	} 
- 	return 0; 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojZGVmaW5lIGxsIGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgbWF4biA9IDIwOwpjb25zdCBpbnQgb28gPSAxMDAwMDAwMDA3OwppbnQgbixtLGg7CmludCBtYXRbbWF4bl1bbWF4bl0sZHBbMTw8bWF4bl1bbWF4bl1bbWF4bl07Cgp2b2lkIGVudGVyKCkKewoJaW50IHUsdix0OwoJZm9yIChpbnQgaT0wOyBpPD1uLTE7IGkrKykKCQlmb3IgKGludCBqPTA7IGo8PW4tMTsgaisrKQoJCQlpZiAoaSE9aikKCQkJCW1hdFtpXVtqXT1vbzsKCQkJZWxzZSBtYXRbaV1bal09MDsKCWZvciAoaW50IGk9MDsgaTw9MTw8bjsgaSsrKQoJCWZvciAoaW50IGo9MDsgajw9bi0xOyBqKyspCgkJCWZvciAoaW50IHo9MDsgejw9bi0xOyB6KyspCgkJCQlkcFtpXVtqXVt6XT1vbzsKCWZvciAoaW50IGk9MTsgaTw9bTsgaSsrKQoJewoJCWNpbiA+PiB1ID4+IHYgPj4gdDsKCQltYXRbdV1bdl09bWluKG1hdFt1XVt2XSx0KTsKCQltYXRbdl1bdV09bWluKG1hdFt2XVt1XSx0KTsKCX0KCS8vY291dCA8PCBtYXRbM11bNF0gPDwgJ1xuJzsKfQp2b2lkIGZsb3lkKCkKewoJZm9yIChpbnQgeD0wOyB4PD1uLTE7IHgrKykKCQlmb3IgKGludCB5PTA7IHk8PW4tMTsgeSsrKQoJCQlmb3IgKGludCB6PTA7IHo8PW4tMTsgeisrKQoJCQkJbWF0W3ldW3pdPW1pbihtYXRbeV1bel0sbWF0W3ldW3hdK21hdFt4XVt6XSk7Cn0KaW50IGdldGJpdChpbnQgeCwgaW50IGkpCnsKCXJldHVybiAoeCA+PiBpKSAmIDE7Cn0KaW50IGNvdW50b25lKGludCB4KQp7CglpbnQgcmVzPTA7Cglmb3IgKGludCBpPTA7IGk8PW4tMTsgaSsrKQoJCWlmIChnZXRiaXQoeCxpKT09MSkgcmVzKys7CglyZXR1cm4gcmVzOwp9Ci8vIHRyYSB2ZSBiaXQgdGh1IGkgY3VhIHNvIHgKaW50IGNsZWFyYml0KGludCB4LCBpbnQgaSkKewoJcmV0dXJuIHggJiAofigxIDw8IGkpKTsKfSAKaW50IHRvZ2dsZShpbnQgeCwgaW50IGkpCnsKCWludCBudW1iZXI9eDsKCW51bWJlciBePSAxIDw8IGk7CglyZXR1cm4gbnVtYmVyOwp9CmludCBjYWxkcChpbnQgbWFzaywgaW50IHUsIGludCB2KQp7CgkvL2NvdXQgPDwgbWFzayA8PCAnICcgPDwgdSA8PCAnICcgPDwgdiA8PCAnXG4nOwoJaWYgKGRwW21hc2tdW3VdW3ZdPT1vbykKCXsKCQlpZiAoY291bnRvbmUobWFzayk9PTApIGRwW21hc2tdW3VdW3ZdPW1hdFt1XVt2XTsKCQllbHNlCgkJewoJCQlmb3IgKGludCBpPTA7IGk8PW4tMTsgaSsrKQoJCQkJaWYgKGdldGJpdChtYXNrLGkpPT0xKQoJCQkJCWRwW21hc2tdW3VdW3ZdPW1pbihkcFttYXNrXVt1XVt2XSxjYWxkcChjbGVhcmJpdChtYXNrLGkpLHUsaSkrbWF0W2ldW3ZdKTsKCQl9Cgl9CgkvL2NvdXQgPDwgZ2V0Yml0KG1hc2ssbi0yKSA8PCAnICc7CgkvL2ZvciAoaW50IGk9MDsgaTw9bi0xOyBpKyspCgkvLwljb3V0IDw8IGdldGJpdChtYXNrLGkpOwoJLy9jb3V0IDw8ICcgJyA8PCBnZXRiaXQobWFzayx1KSA8PCAnICcgPDwgdSA8PCAnICcgPDwgdiA8PCAnICcgPDwgZHBbbWFza11bdV1bdl0gPDwgJ1xuJzsKCXJldHVybiBkcFttYXNrXVt1XVt2XTsKfQppbnQgbm8oaW50IHgpCnsKCWludCB4eD14OwoJZm9yIChpbnQgaT0wOyBpPD1uLTE7IGkrKykKCQl4eD10b2dnbGUoeHgsaSk7CglyZXR1cm4geHg7CQp9CnZvaWQgcHJpbnRiaXQoaW50IHgpCnsKCWZvciAoaW50IGk9MDsgaTw9bi0xOyBpKyspCgkJY291dCA8PCBnZXRiaXQoeCxpKTsKCWNvdXQgPDwgJyAnOwp9CnZvaWQgc29sdmUoaW50IHQpCnsKCWludCByZXM9b287CgloPW4tMjsKCS8vcHJpbnRiaXQoMTYpOwoJLy9wcmludGJpdChubygxNikpOwoJLy9jb3V0IDw8ICdcbic7Cglmb3IgKGludCBpPTA7IGk8PTE8PChuLTEpOyBpKyspCgkJaWYgKChjb3VudG9uZShpKT09aC8yKSBhbmQgKGdldGJpdChpLDApIT0xKSBhbmQgKGdldGJpdChpLG4tMSkhPTEpKQoJCXsKCQkJaW50IHJlczE9b28scmVzMj1vbyxyZXMzPW9vLHJlczQ9b287CgkJCWZvciAoaW50IGo9MTsgajw9bi0yOyBqKyspCgkJCQlpZiAoZ2V0Yml0KGksaik9PTEpCgkJCQl7CgkJCQkJaW50IG1hc2s9Y2xlYXJiaXQoaSxqKTsKCQkJCQlpbnQgbWFzPWNsZWFyYml0KGNsZWFyYml0KGNsZWFyYml0KG5vKGkpLG4tMSksMCksaik7CgkJCQkJLy9jb3V0IDw8IGdldGJpdChtYXMsaikgPDwgJ1xuJzsKCQkJCQkvL3ByaW50Yml0KG1hc2spOwoJCQkJCS8vcHJpbnRiaXQobWFzKTsKCQkJCQkvL2NvdXQgPDwgJ1xuJzsKCQkJCQlyZXMxPW1pbihyZXMxLGNhbGRwKG1hc2ssMCxqKStjYWxkcChtYXMsbi0xLGopKTsKCQkJCX0KCQkJZm9yIChpbnQgaj0xOyBqPD1uLTI7IGorKykKCQkJCWlmIChnZXRiaXQoaSxqKT09MSkKCQkJCXsKCQkJCQlpbnQgbWFzaz1jbGVhcmJpdChpLGopOwoJCQkJCWludCBtYXM9Y2xlYXJiaXQoY2xlYXJiaXQoY2xlYXJiaXQobm8oaSksbi0xKSwwKSxqKTsKCQkJCQkvL2NvdXQgPDwgZ2V0Yml0KG1hcyxqKTw8ICdcbic7CgkJCQkJLy9wcmludGJpdChtYXNrKTsKCQkJCQkvL3ByaW50Yml0KG1hcyk7CgkJCQkJLy9jb3V0IDw8ICdcbic7CgkJCQkJcmVzMj1taW4ocmVzMixjYWxkcChtYXNrLG4tMSxqKStjYWxkcChtYXMsMCxqKSk7CgkJCQl9CgkJCS8vY291dCA8PCByZXMxIDw8ICcgJyA8PCByZXMyIDw8ICdcbic7CgkJCXJlcz1taW4ocmVzLHJlczErcmVzMik7CQkJCQoJCX0KCWlmIChuPT0zKSByZXM9KG1hdFswXVsxXSttYXRbMV1bMl0pKjI7Cgljb3V0IDw8ICJDYXNlICIgPDwgdCA8PCAiOiAiIDw8IHJlcyA8PCAnXG4nOwp9CmludCBtYWluKCkKewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCS8vZnJlb3BlbigiMTI4MS5JTlAiLCJyIixzdGRpbik7CgkvL2ZyZW9wZW4oIjEyODEuT1VUIiwidyIsc3Rkb3V0KTsKCWludCBkZW09MDsKCXdoaWxlIChjaW4gPj4gbiA+PiBtKQoJewoJCWRlbSsrOwoJCWVudGVyKCk7CgkJZmxveWQoKTsKCQlzb2x2ZShkZW0pOwoJCS8vY291dCA8PCAiT0tcbiI7Cgl9CglyZXR1cm4gMDsKfQo=