/*
期望得分:0pts
算法:
思路:
题目名称编辑字符串遗失的赋值树的遍历树上查询
题目类型传统型传统型传统型传统型
目录edit assign traverse query
可执行文件名edit assign traverse query
输入文件名edit.in assign.in traverse.in query.in
输出文件名edit.out assign.out traverse.out query.out
每个测试点时限1.0 秒1.0 秒1.0 秒2.0 秒
内存限制512 MiB 512 MiB 512 MiB 1024 MiB
测试点数目20 20 25 25
测试点是否等分是是是是
检查:long long? 1e9 bool? //freopen("neuvillette.in","r",stdin)????
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=1e5+7;
int dep[N];
int fa[N][19];
struct node{int to,nxt;}e[N<<1];
int h[N],idx;
inline void addEdge(int u,int v)
{
	++idx;
	e[idx]={v,h[u]};
	h[u]=idx;
}
void dfs(int u,int p)
{
	dep[u]=dep[p]+1;
	fa[u][0]=p;
	for(int i=0;i<=18;i++) fa[u][i]=fa[fa[u][i-1]][i-1];
	for(int i=h[u];i;i=e[i].nxt) dfs(e[i].to,u);
}
int lca(int u,int v)
{
	if(dep[u]<dep[v]) swap(u,v);
	for(int i=18;i>=0;i--) if(dep[fa[u][i]]<=dep[v]) u=fa[u][i];
	if(u==v) return v;
	for(int i=18;i>=0;i--)
	{
		if(dep[u]!=dep[v]) u=fa[u][i],v=fa[v][i];
	}
	return fa[u][0];
}
void update_dep()
{
	int fa=0;
	for(int i=h[1];i;i=e[i].nxt)
	{
		int v=e[i].to; 
		dep[v]=dep[fa]+1;
		i=h[v];
		cerr<<v<<endl;
	}
}
int main()
{
	freopen("query.in","r",stdin);
	freopen("query.out","w",stdout);
	int n,u,v;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&u,&v);
		addEdge(u,v);
		addEdge(v,u);
	}
//	dfs(1,0);
	update_dep();
//	for(int i=1;i<=n;i++) cout<<dep[i]<<' ';
	int Q,l,r,k;
	scanf("%d",&Q);
	while(Q--)
	{
		scanf("%d%d%d",&l,&r,&k);
		int mx=-1;
		for(int i=l;i<=r;i++) mx=max(mx,dep[i]);
//		printf("%d\n",mx);
	}
	return 0;
}
/*
12:08 再挣扎一下吧,但LCA板子被我忘了 
12:21 试试树链的情况 
12:35 挣扎不了一点 
*/
