#include <iostream>
#include <vector>
using namespace std;
/*
状态表示f[i,j,a,b]
集合
P1走到[i,j],P2走到[a,b]的路径
属性
最大值
状态计算
f[i-1,j,a-1,b] + c[i,j] + c[a,b]
f[i-1,j,a,b-1]
f[i,j-1,a-1,b]
f[i,j-1,a,b-1]
特殊情况
如果[i,j] == [a,b]
则只算一次c
*/
const int N = 11;
int n;
int x, y, w;
int g[N][N];
int f[N][N][N][N];
int main()
{
cin >> n;
while(cin >> x >> y >> w, x||y||w)
g[x][y] = w;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
for(int a=1; a<=n; a++)
for(int b=1; b<=n; b++)
{
f[i][j][a][b] = max(max(f[i-1][j][a-1][b],f[i-1][j][a][b-1]),max(f[i][j-1][a-1][b],f[i][j-1][a][b-1]));
if(i==a && j==b)
f[i][j][a][b] += g[i][j];
else
f[i][j][a][b] += (g[i][j] + g[a][b]);
}
cout << f[n][n][n][n];
}