/*(^v^)*/
#include<bits/stdc++.h>
using namespace std;
const int N=305,M=50000;
int dx[]={ 1, 0, 0,-1};
int dy[]={ 0, 1,-1, 0};
int n,m,T=1e9;
struct mp{int mt,tm,pt;}a[N][N];
void dfs(int x,int y,int t)
{
t++;
if(a[x][y].mt==0)
{
T=min(T,t);
return ;
}
if(a[x][y].tm<=t || x<0 || y<0 || a[x][y].pt==1) return ;
for(int i=0;i<4;i++)
{
a[x][y].pt=1;
dfs(x+dx[i],y+dy[i],t);
}
}
signed main()
{
cin>>m;
for(int i=1;i<=m;i++)
{
int x,y,t; cin>>x>>y>>t;
a[x][y].tm=t;a[x][y].mt=1;
}
dfs(0,0,0);
if(T==1e9) cout<<"-1";
else cout<<T;
return 0;
}
/*(^v^)*/