#include<stdio.h>
#include<algorithm>
using namespace std;
struct node{
long long x,y,z,num;
}a[300005],b[300005],c[300005];
bool cmp1(node n,node m)
{
return n.x>m.x;
}
bool cmp2(node n,node m)
{
return n.y>m.y;
}
bool cmp3(node n,node m)
{
return n.z>m.z;
}
long long n,m;
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
scanf("%lld%lld%lld",&a[i].x,&a[i].y,&a[i].z);
a[i].num=i;
b[i].num=i;
c[i].num=i;
b[i].x=a[i].x;
b[i].y=a[i].y;
b[i].z=a[i].z;
c[i].x=a[i].x;
c[i].y=a[i].y;
c[i].z=a[i].z;
}
if(n<=300)
{
sort(a+1,a+n+1,cmp1);
sort(b+1,b+n+1,cmp2);
sort(c+1,c+n+1,cmp3);
for(int i=1,j=1,k=1;;)
{
if(a[i].num==b[j].num)
{
if(b[j].num==c[k].num)
k++;
i++;
j++;
continue;
}
if(b[j].num==c[k].num)
{
j++;
k++;
continue;
}
if(a[i].num==c[k].num)
{
i++;
k++;
continue;
}
if(i>n||j>n||k>n)
{
printf("-1");
return 0;
}
printf("%lld",a[i].x+b[j].y+c[k].z);
return 0;
}
}
}