#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n;
int f[15][15];
int w[11][11][11][11];
//w[a1][b1][a2][b2]=max(w[a1-1][b1][a2-1][b2],w[a1-1][b1][a2][b2-1],w[a1][b1-1][a2-1][b2],w[a1][b1-1][a2][b2-1])
//动态转移方程
int q(int a,int b)
{
if(a>b)
return a;
return b;
}
//w[1][1][1][1]==0
//a1,b1,a2,b2>=1
int dg(int a1,int b1,int a2,int b2)
{
int all=0;
if(a1==0||b1==0||a2==0||b2==0)
return 0;
if(a1==a2&&b1==b2)
{
all+=f[a1][b1];
}
else
{
all+=f[a1][b1];
all+=f[a2][b2];
}
w[a1][b1][a2][b2]=q(q(dg(a1-1,b1,a2-1,b2),dg(a1-1,b1,a2,b2-1)),q(dg(a1,b1-1,a2-1,b2),dg(a1,b1-1,a2,b2-1)))+all;
return w[a1][b1][a2][b2];
}
int main()
{
cin>>n;
while(1)
{
int x,y,z;
cin>>x>>y>>z;
f[x][y]=z;
if(x==0&&y==0&&z==0)
break;
}
cout<<dg(n,n,n,n);
return 0;
}