submission
#include<bits/stdc++.h>
#define gc getchar
#define eb emplace_back
#define ef emplace_front
#define ep emplace
#define ll long long
#define fr(a,b,c) for(int a = b;a <= c;a ++)
using namespace std;
template<typename T>void read(T &x){x = 0;int f = 1;char c = gc();while(!isdigit(c)){if(c == '-') f = -1;c = gc();}while(isdigit(c)) x = (x << 3) + (x << 1) + c - '0',c = gc();x *= f;}
const int N = 600000;
const ll inf = 1000000000000000000ll;
int q,a[N],b[N],x[N],to[N][20];
ll len[N],tl[N][20],tr[N][20],lln[N],rln[N];
int f(int w,ll x){
if(w < 3) return w - 1;
for(int i = 19;~i;i --){
if(!to[w][i] || tl[w][i] > inf) continue;
if(x >= tl[w][i] && x <= tr[w][i]){
x -= tl[w][i] - 1,w = to[w][i];
if(w < 3) return w - 1;
}
}
if(w < 3) return w - 1;
if(lln[w] >= rln[w]) return f(b[w],x - lln[w]);
return f(a[w],x);
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cin >> q;
len[1] = len[2] = 1;
fr(i,3,q + 2){
cin >> a[i] >> b[i] >> x[i];
a[i] ++,b[i] ++;
len[i] = min(inf,len[a[i]] + len[b[i]]);
lln[i] = len[a[i]],rln[i] = min(inf - len[a[i]],len[b[i]]);
if(lln[i] >= rln[i]) tl[i][0] = 1,tr[i][0] = lln[i],to[i][0] = a[i];
else tl[i][0] = lln[i] + 1,tr[i][0] = len[i],to[i][0] = b[i];
fr(j,1,19){
if(!to[to[i][j - 1]][j - 1]) break;
to[i][j] = to[to[i][j - 1]][j - 1];
tl[i][j] = min(inf + 1,tl[i][j - 1] + tl[to[i][j - 1]][j - 1] - 1);
tr[i][j] = min(inf,tl[i][j - 1] + tr[to[i][j - 1]][j - 1] - 1);
}
printf("%d\n",f(i,x[i]));
}
return 0;
}