#include <iostream>
#include <stdio.h>
#include <queue>
#include <vector>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
typedef long long int ll;
using namespace std;
bool compare ( const pair<pair<ll,ll>,ll> &i, const pair<pair<ll,ll>,ll> &j) {
return !(i.first.first < j.first.first && i.first.second < j.first.second);
}
ll n, i, j, LIS[24000], maxx, a, b, c;
vector< pair <pair<ll, ll>, ll> > block;
int main() {
while(1) {
cin>>n;
if(n == 0) break;
for(i=0;i<n;++i) {
cin>>a>>b>>c;
block.push_back(make_pair(make_pair(a,b), c));
block.push_back(make_pair(make_pair(a,c), b));
block.push_back(make_pair(make_pair(b,a), c));
block.push_back(make_pair(make_pair(b,c), a));
block.push_back(make_pair(make_pair(c,a), b));
block.push_back(make_pair(make_pair(c,b), a));
}
memset(LIS, 0, (20000)*sizeof(ll));
sort(block.begin(), block.end(), compare);
LIS[0] = block[0].second;
for(i=1;i<(6*n);++i) {
maxx = -999;
for(j=0;j<i;++j) {
if(block[j].first.first > block[i].first.first && block[j].first.second > block[i].first.second) {
maxx = (maxx < LIS[j] + block[i].second) ? (LIS[j] + block[i].second) : maxx;
}
}
maxx = (maxx < block[i].second) ? (block[i].second) : maxx;
LIS[i] = maxx;
}
maxx=-99;
for(i=0;i<6*n;++i) {
maxx = (maxx<LIS[i]) ? LIS[i]:maxx;
}
cout<<maxx<<"\n";
block.clear();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBjb21wYXJlICggY29uc3QgcGFpcjxwYWlyPGxsLGxsPixsbD4gJmksIGNvbnN0IHBhaXI8cGFpcjxsbCxsbD4sbGw+ICZqKSB7CglyZXR1cm4gIShpLmZpcnN0LmZpcnN0IDwgai5maXJzdC5maXJzdCAmJiBpLmZpcnN0LnNlY29uZCA8IGouZmlyc3Quc2Vjb25kKTsKfQoKCmxsIG4sIGksIGosIExJU1syNDAwMF0sIG1heHgsIGEsIGIsIGM7Cgl2ZWN0b3I8IHBhaXIgPHBhaXI8bGwsIGxsPiwgbGw+ID4gYmxvY2s7CmludCBtYWluKCkgewoJCgl3aGlsZSgxKSB7CgkJY2luPj5uOwoJCWlmKG4gPT0gMCkgYnJlYWs7CgkJZm9yKGk9MDtpPG47KytpKSB7CgkJCWNpbj4+YT4+Yj4+YzsKCQkJYmxvY2sucHVzaF9iYWNrKG1ha2VfcGFpcihtYWtlX3BhaXIoYSxiKSwgYykpOwoJCQlibG9jay5wdXNoX2JhY2sobWFrZV9wYWlyKG1ha2VfcGFpcihhLGMpLCBiKSk7CgkJCWJsb2NrLnB1c2hfYmFjayhtYWtlX3BhaXIobWFrZV9wYWlyKGIsYSksIGMpKTsKCQkJYmxvY2sucHVzaF9iYWNrKG1ha2VfcGFpcihtYWtlX3BhaXIoYixjKSwgYSkpOwoJCQlibG9jay5wdXNoX2JhY2sobWFrZV9wYWlyKG1ha2VfcGFpcihjLGEpLCBiKSk7CgkJCWJsb2NrLnB1c2hfYmFjayhtYWtlX3BhaXIobWFrZV9wYWlyKGMsYiksIGEpKTsKCQl9CgkJbWVtc2V0KExJUywgMCwgKDIwMDAwKSpzaXplb2YobGwpKTsKCQlzb3J0KGJsb2NrLmJlZ2luKCksIGJsb2NrLmVuZCgpLCBjb21wYXJlKTsKCQkKCQlMSVNbMF0gPSBibG9ja1swXS5zZWNvbmQ7CgkJZm9yKGk9MTtpPCg2Km4pOysraSkgewoJCQltYXh4ID0gLTk5OTsKCQkJZm9yKGo9MDtqPGk7KytqKSB7CgkJCQlpZihibG9ja1tqXS5maXJzdC5maXJzdCA+IGJsb2NrW2ldLmZpcnN0LmZpcnN0ICYmIGJsb2NrW2pdLmZpcnN0LnNlY29uZCA+IGJsb2NrW2ldLmZpcnN0LnNlY29uZCkgewoJCQkJCW1heHggPSAobWF4eCA8IExJU1tqXSArIGJsb2NrW2ldLnNlY29uZCkgPyAoTElTW2pdICsgYmxvY2tbaV0uc2Vjb25kKSA6IG1heHg7CgkJCQl9CgkJCX0KCQkJbWF4eCA9IChtYXh4IDwgYmxvY2tbaV0uc2Vjb25kKSA/IChibG9ja1tpXS5zZWNvbmQpIDogbWF4eDsKCQkJTElTW2ldID0gbWF4eDsKCQl9CgkJbWF4eD0tOTk7CgkJZm9yKGk9MDtpPDYqbjsrK2kpIHsKCQkJbWF4eCA9IChtYXh4PExJU1tpXSkgPyBMSVNbaV06bWF4eDsKCQl9CgkJY291dDw8bWF4eDw8IlxuIjsKCQlibG9jay5jbGVhcigpOwoJfQoJcmV0dXJuIDA7Cn0=