#include<bits/stdc++.h>
#define MAXN 250010
#define FILE "read"
#define cmin(a,b) a=min(a,b)
#define cmax(a,b) a=max(a,b)
using namespace std;
typedef long long ll;
const ll INF=1e18;
struct node{int y,next;ll v;}e[MAXN<<1];
int n,m,len,dfs_clock,Link[MAXN],dfn[MAXN],deep[MAXN],h[MAXN],sta[MAXN],anc[MAXN][25];
ll minn[MAXN],f[MAXN];
inline int read(){
int x=0,f=1; char ch=getchar();
while(ch>'9'||ch<'0') {if(ch=='-') f=-1; ch=getchar();}
while(ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
bool mycmp(int x,int y){return dfn[x]<dfn[y];}
void insert(int x,int y,int v){
e[++len].next=Link[x];Link[x]=len;e[len].y=y;e[len].v=v;
e[++len].next=Link[y];Link[y]=len;e[len].y=x;e[len].v=v;
}
void Insert(int x,int y){
if(x==y) return;
e[++len].next=Link[x];Link[x]=len;e[len].y=y;
}
void dfs(int x,int fa){
dfn[x]=++dfs_clock; anc[x][0]=fa;
for(int i=1;i<=20;++i) anc[x][i]=anc[anc[x][i-1]][i-1];
for(int i=Link[x];i;i=e[i].next)if(e[i].y!=fa){
minn[e[i].y]=min(minn[x],e[i].v);
deep[e[i].y]=deep[x]+1;
dfs(e[i].y,x);
}
}
int LCA(int x,int y){
if(deep[x]<deep[y]) swap(x,y);
for(int i=20;i>=0;--i) if(deep[anc[x][i]]>=deep[y]) x=anc[x][i];
if(x==y) return x;
for(int i=20;i>=0;--i) if(anc[x][i]!=anc[y][i]) x=anc[x][i],y=anc[y][i];
return anc[x][0];
}
void dp(int x){
ll ret=0; f[x]=minn[x];
for(int i=Link[x];i;i=e[i].next){
dp(e[i].y);
ret+=f[e[i].y];
}Link[x]=0;
if(ret) cmin(f[x],ret);
}
void solve(){
int K=read(),top=0; len=0;
for(int i=1;i<=K;++i) h[i]=read();
sort(h+1,h+K+1,mycmp);
int tot=0; h[++tot]=h[1];
for(int i=2;i<=K;i++) if(LCA(h[tot],h[i])!=h[tot])h[++tot]=h[i];
sta[++top]=1;
for(int i=1;i<=tot;++i){
int x=h[i],lca=LCA(x,sta[top]);
if(lca==sta[top]) sta[++top]=x;
else{
while(top>=1&&deep[sta[top-1]]>=deep[lca])
Insert(sta[top-1],sta[top]),--top;
if(sta[top]!=lca){
Insert(lca,sta[top--]);
sta[++top]=lca;
}
sta[++top]=x;
}
}
for(int i=1;i<top;++i) Insert(sta[i],sta[i+1]);
dp(1); printf("%lld\n",f[1]);
}
int main(){
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
n=read(); deep[1]=1; minn[1]=INF;
for(int i=1;i<n;++i){
int x=read(),y=read(),v=read();
insert(x,y,v);
}
dfs(1,0); m=read();
memset(Link,0,sizeof(Link));
for(int i=1;i<=m;++i) solve();
printf("%d\n",clock());
return 0;
}