#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int tmp[30][3];
int dp[100];
class Node
{
public:
int x;
int y;
int h;
bool operator <(const Node&n) const
{
if(x==n.x)
return y<n.y;
else
return x<n.x;
}
};
Node arr[100];
int se[100][2];
int main()
{
int n;
int sign=0;
while(cin>>n&&n!=0)
{
sign++;
int num=0;
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
{
cin>>tmp[i][0]>>tmp[i][1]>>tmp[i][2];
sort(tmp[i],tmp[i]+3);
arr[num].x=tmp[i][2];
arr[num].y=tmp[i][1];
arr[num].h=tmp[i][0];
num++;
arr[num].x=tmp[i][1];
arr[num].y=tmp[i][0];
arr[num].h=tmp[i][2];
num++;
arr[num].x=tmp[i][2];
arr[num].y=tmp[i][0];
arr[num].h=tmp[i][1];
num++;
}
sort(arr,arr+num);
for(int i=0;i<num;i++)
{
dp[i]=arr[i].h;
for(int j=0;j<i;j++)
if(arr[i].x>arr[j].x&arr[i].y>arr[j].y)
dp[i]=max(dp[j]+arr[i].h,dp[i]);
}
int mi=0;
for(int i=0;i<num;i++)
{
if(mi<dp[i])
mi=dp[i];
}
cout<<"Case "<<sign<<": maximum height = "<<mi<<endl;
}
return 0;
}