#include<bits/stdc++.h>
using namespace std;
int u,v,k,n,Q,depth[6000],fa[6000][30],lg[6000];
vector <int> q[6000];
void dfs(int x,int la,int dep){
	fa[x][0]=la;depth[x]=dep;k=max(k,dep);
	for(int i=0;i<(int)q[x].size();i++)if(q[x][i]!=la)dfs(q[x][i],x,dep+1);
}
void init(){
	for(int i=2;i<=k;i++)lg[i]=lg[i>>1]+1;
}
void ST(int x,int la){
	for(int i=1;i<=lg[depth[x]];i++)fa[x][i]=fa[fa[x][i-1]][i-1];
	for(int i=0;i<(int)q[x].size();i++)if(q[x][i]!=la)ST(q[x][i],x);
}
int LCA(int x,int y){
	if(depth[x]>depth[y])swap(x,y);
}
int main(){
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	cin>>n;
	for(int i=1;i<n;i++){
		scanf("%d%d",&u,&v);
		q[u].push_back(v);q[v].push_back(u);
	}
	dfs(1,0,1);init();ST(1,0);
	cin>>Q;
	for(int i=0;i<Q;i++){
		int ans=0;
		scanf("%d%d%d",&u,&v,&k);
		for(int i=u+k-1;i<=v;i++){
			int j=i-k;
			for(;j<k;j++)ans=max(LCA(j,j+1),ans);
		}
	}
	printf("-1");
	return 0;
}
