#include<bits/stdc++.h>
using namespace std;
// 走两次是不行的,因为这就是贪心了。。
// 需要多线程dp,就是想象有2个人同时走,他们可以走到一起,但是必须只加一次;
// 转移方程:
// (1)a,b都从上/下走过来
// (2)a,b一个上一个下走过来
// 共4种
//dp 数组代表a到哪,b到哪,可以不一样
int dp[11][11][11][11]={0},a[11][11]={0};
int main()
{
int n,x,y,z,s;
cin>>n;
while(1){
cin>>x>>y>>z;
if(x==y&&y==z&&z==0) break;
a[x][y]=z;
}
for( int x1 = 1; x1 <= n; x1++ ) {
for( int y1 = 1; y1 <= n; y1++ ) {
for( int x2 = 1; x2 <= n; x2++ ) {
for( int y2 = 1; y2 <= n; y2++ ){
int t=max(dp[x1-1][y1][x2-1][y2],dp[x1][y1-1][x2][y2-1]);
t=max(t,dp[x1-1][y1][x2][y2-1]);
t=max(t,dp[x1][y1-1][x2-1][y2]);
if(x1==x2&&y1==y2){
//代表到达同一位置,只能,加一次,每次都这样,就保证了前面的也不会重复加
dp[x1][y1][x2][y2]=t+a[x1][y1];
}
else dp[x1][y1][x2][y2]=t+a[x1][y1]+a[x2][y2];
}
}
}
}
cout<<dp[n][n][n][n]<<endl;
return 0;
}