include<bits/stdc++.h>

using namespace std;
int n;
int a[15][15];
int f[15][15][15][15];
int main(){
cin >> n;
int x=0,y=0,b=0;
while(cin >> x >> y >> b){
if(x==0&&y==0&&b==0) break;
a[x][y]=b;
}
//i1,j1表示第一个人的位置;i2,j2表示第二个人的位置;所以转移方程是分别讨论且是同时进行的
//f[i1][j1][i2][j2]表示两个人同时走,一共的取数
for(int i1=1;i1<=n;++i1){
for(int j1=1;j1<=n;++j1){
for(int i2=1;i2<=n;++i2){
for(int j2=1;j2<=n;++j2){
if(i1+j1!=i2+j2) continue;
int z=0;
//1、1号向下走,2号向下走
//1、1号向下走,2号向左走
//1、1号向左走,2号向下走
//1、1号向左走,2号向左走
//又因为f表示的是路径上数总和最大,所以以上4种情况取最大值
z=max(f[i1-1][j1][i2-1][j2],f[i1][j1-1][i2][j2-1]);
z=max(z,max(f[i1-1][j1][i2][j2-1],f[i1][j1-1][i2-1][j2]));
//如果两人所到的位置是同一个的话,当前位置的数取一次即可
if(i1==i2&&j1==j2){
f[i1][j1][i2][j2]=z+a[i1][j1];
}
else f[i1][j1][i2][j2]=z+a[i1][j1]+a[i2][j2];
}
}
}
}
cout << f[n][n][n][n];
return 0;
}