#pragma warning(disable:4996)
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<vector>
#include<algorithm>
#include<iostream>
#include<time.h>
using namespace std;
int dp[95];
struct node
{
int l, w, h;
}block[95];
bool cmp(node a, node b)
{
if (a.l == b.l)
return a.w>b.w;
return a.l > b.l;
}
int main()
{
int n;
int cas = 1;
while (cin >> n, n)
{
int k = 1;
for (int i = 1; i <= n;i++)
{
int temp[4];
cin >> temp[1] >> temp[2] >> temp[3];
sort(temp + 1, temp + 4);
block[k].l = temp[3], block[k].w = temp[2], block[k].h = temp[1], k++;
block[k].l = temp[2], block[k].w = temp[1], block[k].h = temp[3], k++;
block[k].l = temp[3], block[k].w = temp[1], block[k].h = temp[2], k++;
}
sort(block + 1, block + k, cmp);
for (int i = 1; i < k; i++)
dp[i] = block[i].h;
for (int i = k - 1; i >= 1;i--)
{
for (int j = i + 1; j < k; j++)
{
if (block[i].l>block[j].l&&block[i].w>block[j].w)
dp[i] = max(dp[i], dp[j] + block[i].h);
}
}
int THeight = dp[1];
for (int i = 1; i <k; i++)
if (THeight<dp[i])
THeight = dp[i];
printf("Case %d: maximum height = %d\n", cas++, THeight);
}
return 0;
}