#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
typedef pair<pii, int> piii;
const int dx[]={0,0,0,-1,1};
const int dy[]={0,-1,1,0,0};
const int MAXN=303;
int meteor[MAXN][MAXN];
int vis[MAXN][MAXN];
int m,ans=-1;
queue<piii> q;
int main(){
memset(vis,-1,sizeof vis);
for(int i=0;i<MAXN;++i){
for(int j=0;j<MAXN;++j){
meteor[i][j]=1001;
}
}
scanf("%d",&m);
int a,b,c;
for(int i=1;i<=m;++i){
scanf("%d%d%d",&a,&b,&c);
for(int j=0;j<4;++j){
meteor[a-dx[j]][b-dy[j]]=min(meteor[a-dx[j]][b-dy[j]],c);
}
}
q.push(piii(pii(0,0), 0));
vis[0][0]=0;
while (!q.empty()) {
piii u = q.front();
q.pop();
int x = u.first.first, y = u.first.second;
int dis = u.second;
for (int k = 1; k <= 4; ++k) {
int newx = x + dx[k];
int newy = y + dy[k];
if(newx<0||newy<0||vis[newx][newy]!=-1||meteor[newx][newy]<=dis)
continue;
q.push(piii(pii(newx, newy), dis + 1));
vis[newx][newy]=0;
ans==max(dis,ans);
}
if(meteor[x][y]==1001){
break;
}
}
printf("%d\n",ans);
return 0;
}