#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define lop(i,a,b) for(int i=(a);i<(b);i++)
#define dwn(i,a,b) for(int i=(a);i>=(b);i--)
#define el '\n'
typedef pair<int,int> PII;
using LL = long long;
const int INF=0x3f3f3f3f;
const int N=400;
int t[N][N],d[N][N];
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n;
int bfs()
{
memset(d,-1,sizeof(d));
queue<PII>q;
q.push({0,0});
d[0][0]=0;
while(q.size())
{
auto p=q.front();
q.pop();
if(t[p.first][p.second]==INF)return d[p.first][p.second];
lop(i,0,4)
{
int x=p.first+dx[i],y=p.second+dy[i];
if(x>=0&&y>=0&&d[x][y]==-1&&t[x][y]>d[p.first][p.second]+1)
{
d[x][y]=d[p.first][p.second]+1;
q.push({x,y});
}
}
}
return -1;
}
void solve()
{
memset(t,0x3f,sizeof(t));
cin>>n;
lop(i,0,n)
{
int x,y,T;
cin>>x>>y>>T;
t[x][y]=min(t[x][y],T);
lop(i,0,4)
{
int a=x+dx[i],b=y+dy[i];
if(a>=0&&b>=0)
t[a][b]=min(t[a][b],t[x][y]);
}
}
cout<<bfs()<<el;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int tt = 1;
while(tt--)
solve();
return 0;
}