#include <bits/stdc++.h>

using namespace std;

typedef pair<int,int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef long long ll;

int n,t,a,b,c,k;
ll ans;
vii adj[100100];
vii lf;
int par[100100];
int mpar[100100];
int lev[100100];
int res[100100];

void dfs(int d, int l){
	lev[d] = l;
	for (int i=0; i<adj[d].size(); i++){
		int u = adj[d][i].first;
		if (lev[u] < 0){
			par[u] = d;
			mpar[u] = adj[d][i].second;
			dfs(u,l+1);
		}
	}
	lf.push_back(ii(-l,d));
}

int main(){
	scanf("%d%d",&n,&t);
	for (int i=1; i<n; i++){
		scanf("%d%d%d",&a,&b,&c);
		a--;
		b--;
		adj[a].push_back(ii(b,c));
		adj[b].push_back(ii(a,c));
	}
	memset(par,-1,sizeof par);
	memset(lev,-1,sizeof lev);
	dfs(0,0);
	sort(lf.begin(),lf.end());
	for (int i=0; i<t; i++){
		scanf("%d",&k);
		memset(res,0,sizeof res);
		for (int j=0; j<k; j++){
			scanf("%d",&a);
			a--;
			res[a]++;
		}
		ans = 0;
		for (int j=0; j<n; j++){
			int i = lf[j].second;
			if (par[i] >= 0){
				ans += ((ll)res[i]*(ll)mpar[i]*(ll)(k-res[i]));
				res[par[i]] += res[i];
			}
		}
		printf("%lld\n",ans);
	}
	return 0;
}