/*   @JUDGE_ID:   1705PZ   437   C */
#include <stdio.h>
#include <limits.h>

int maxx,maxy,maxz,ans;
int table[100][3];
int n;

int checksize(int x1,int y1,int x2,int y2){
if((x1 > x2 && y1 > y2) || (y1 > x2 && x1 > y2))
	return 1;
else
	return 0;
}

int getdata(){
int i,x,y,z;
scanf("%d",&n);
if(n == 0)
	return 0;
for(i = 0;i < n;i++){
	scanf("%d %d %d",&x,&y,&z);
	table[3 * i + 0][0] = x;
	table[3 * i + 0][1] = y;
	table[3 * i + 0][2] = z;
	table[3 * i + 1][0] = x;
	table[3 * i + 1][1] = z;
	table[3 * i + 1][2] = y;
	table[3 * i + 2][0] = y;
	table[3 * i + 2][1] = z;
	table[3 * i + 2][2] = x;
	}
return 1;
}

void work(){
int i;
int nowx,nowy,nowz;
for(i = 0;i < 3 * n;i++)
	if(checksize(maxx,maxy,table[i][0],table[i][1]) == 1){
		nowx = maxx;
		nowy = maxy;
		nowz = maxz;
		maxx = table[i][0];
		maxy = table[i][1];
		maxz += table[i][2];
		if(maxz > ans)
			ans = maxz;
		work();
		maxx = nowx;
		maxy = nowy;
		maxz = nowz;
		}
}

int main(){
int count = 0;
while(1){
	if(getdata() == 0)
		break;
	maxx = INT_MAX;
	maxy = INT_MAX;
	maxz = 0;
	ans = 0;
	work();
	printf("Case %d: maximum height = %d\n",++count,ans); 
	}

return 0;
}
@END_OF_SOURCE_CODE
