#include<bits/stdc++.h>
using namespace std;

int w[100005],d[100005];
vector<int> vec;
bool cmp(int x,int y){
	return x>y;
}
int main(){
	int T,n,x,y;
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		long long sum=0;
		for(int i=1;i<=n;i++) scanf("%d",&w[i]),sum+=w[i],d[i]=0;
		for(int i=1;i<n;i++){
			scanf("%d%d",&x,&y);
			d[x]++,d[y]++;
		}
		vec.clear();
		for(int i=1;i<=n;i++)
			for(int j=1;j<d[i];j++)
				vec.push_back(w[i]);
		sort(vec.begin(),vec.end(),cmp);
		int i=0;
		printf("%lld ",sum);
		for(auto x:vec){
			i++;
			if(i==n) break;
			sum+=x;
			printf("%lld ",sum);
		}
		printf("\n");
	}
}
