#include<bits/stdc++.h>
using namespace std;
const int N=310;
bool s[N][N];
int m,t[N][N];
int dx[]={0,0,0,-1,1},dy[]={0,1,-1,0,0};
struct stu{
int x,y,t;
}home;
int main(){
cin>>m;
int sx,sy,st;
while(m--){
cin>>sx>>sy>>st;
for(int i=0;i<5;i++){
int ex=sx+dx[i],ey=sy+dy[i];
if(ex>=0&&ey>=0&&(st<t[ex][ey]||t[ex][ey]==0))
t[ex][ey]=st;
}
}
queue<stu>q;
home.x=0,home.y=0,home.t=0;
q.push({home});
s[0][0]=1;
while(q.size()){
auto k=q.front();
q.pop();
for(int i=1;i<5;i++){
int x=k.x+dx[i],y=k.y+dy[i],ti=k.t;
if(x>=0&&y>=0&&!s[x][y]&&(ti+1<t[x][y]||t[x][y]==0)){
s[x][y]=1;
stu tp;
tp.x=x;
tp.y=y;
tp.t=ti+1;
q.push(tp);
if(t[x][y]==0){
cout<<tp.t;
return 0;
}
}
}
}
cout<<-1;
return 0;
}