#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <cstring>
#include <cstdlib>
using namespace std;
//英语 抄博友程序 dfs 动态规划 没掌握
int x[1008];
int y[1008];
int z[1008];
vector<int> g[1008];
int dp[1008][2];
int dfs(int v,int fa)
{
dp[v][0]=0;
dp[v][1]=z[v];
for(int i=0;i<g[v].size();i++)
{
int u=g[v][i];
if(u==fa)
{
continue;
}
dfs(u,v);
dp[v][0]=max(dp[v][0],max(dp[u][0],dp[u][1]));//没掌握
dp[v][1]+=dp[u][1]>0?dp[u][1]:0;//没掌握
}
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&x[i],&y[i],&z[i]);
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(abs(x[i]-x[j])+abs(y[i]-y[j])==1)
{
g[i].push_back(j);
g[j].push_back(i);
}
}
}
/*
dfs(1,0);
cout<<max(dp[1][0],dp[1][1])<<endl;*/
int jg=0;
for(int i=1;i<=n;i++)
{
memset(dp,0,sizeof(dp));
dfs(i,0);
jg=max(jg,max(dp[i][0],dp[i][1]));
}
cout<<jg<<endl;
return 0;
}